//
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
//....................................................................................................................................................................................................................................................................................::::````````````````````````````:::.........................................................................................................................................................................................................................................................
//...................................................................................................................................................................................................................................................................:`;;~i/}*IYF&#EE$$$$$#K&K####RRK&FYII]]]]]]}}ll]ll/"~,:......................................................................................................................................................................................................................................................
//........................................................................................................................................................................................................................................................`,,'>1]*IIIYXFFKR###RK&FYI*]]}/++++++++//////+++++++++++++//ii/Il>,:....................................................................................................................................................................................................................................................
//.......................................................................................................................................................................................................................................:::```;"i}*&##&Il}IXF#RFX*l1/++++ii+///++///1}}1/11/11}1111111111111111111111/]/YIXF*!`:.................................................................................................................................................................................................................................................
//.................................................................................................................................................................................................................................:::``'>/lKEKYl]i>1Y&&FXl}+>>ii>++++//+++///////////////1111////111111111111111111111111l11YX]",:...............................................................................................................................................................................................................................................
//..........................................................................................................................................................................................................................```;ilXK&I}+i>>>>i+++i++>>i>"i}/ii+/++++++++//++++++++/////////////////////1111111111111111111111111IF]!;:............................................................................................................................................................................................................................................
//......................................................................................................................................................................................................................`,,!]F&Xl+"!"++i>>iiii+iii+++ii++>i+1/+i+/+++++////////////////+++////////////////1111111111111111/}]1/1}}FF}~'`..........................................................................................................................................................................................................................................
//................................................................................................................................................................................................................::`'1Yl/!~~">i/}IXK##KXI&*1/+++++////+++///////////////////////////////////////////////11111111111111111111111111]RERI*}";:.....................................................................................................................................................................................................................................
//.............................................................................................................................................................................................................:.:;1]">11KRR##RY]/>>iiiiii1+i+++//++///+////////////////////////////////////////////11///11111111111111}}}}}}}}}}1]+/F$Y}}]*+;:...................................................................................................................................................................................................................................
//......................................................................................................................................................................................................`,;'ilF&&&*]>++"++>i++iii+iiii++ii++//+++i++++++//////////////////////////////////////////11111/11111111111111}}}]}]]]]}}}1]}+}I#Y}/+}FY>,:...............................................................................................................................................................................................................................
//..............................................................................................................................................................................................```;!+]X&&XY]+"">i>ii>>>iiiiiiiiiiiii++++++++++++++++++///////////////////////////////////11111111111111111111111}}}}}}}]]]]]]]]]}]]]}//I#F]}/i/lF1~`.............................................................................................................................................................................................................................
//.....................................................................................................................................................................................::`;!ilKEKX}/>!~">>>>""!!">>>>>>>iiiiiiiiiiiii+++++++++++++++++++//////////11111111////////////////11////111111111111111}}}}}}}}}}]]]]]]]]]]]]]}1}]KRI//1}/+1Yl!`..........................................................................................................................................................................................................................
//..................................................................................................................................................................................`;!1KWRX}"~~"i"""!~!">>"">>>"">>>>>>iiiiiiiiiiiiiiiiiiiii+++++++++++//////////111111111///////////////1//////111111111111111}}}}}}}}}}]]]]]]]]l]]]]]}}]ER}+1/i/}/ilI+'........................................................................................................................................................................................................................
//.........................................................................................................................................................................:::']F&KI+"!!!">>>>"""""">>>>>>>>>>>>>>>>>>iiiiiiiiiiiiiiiiiiiiiiii+++++++++++//////////////////////////////////////////111//11111111111}}}}}}}}]]]]]ll]]]]]]]]]1F#I+/+//11/+/}KY!`....................................................................................................................................................................................................................
//....................................................................................................................................................................::,,!]&RY/>>!""""!!~!!"">>>>>>>>>>>>>>>>>>>>>>iiiiiiiiiiiiiiiiiiiiiiiiiiiiii++++++++//////////////////////////////////////////////////11111111}}}1}}}}]]]]ll]]]]]]]]}}}KR]1/}1/11/++/>F&>`..................................................................................................................................................................................................................
//..................................................................................................................................................................'1YRXi;~!!!~~~!""""""!!!"">>>>>>>>>>>>>>>>>>iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii+++++++////////////////////////++++//////////////////////////111111}}}}}]]]lllll]]]l}}}&#*/}}}}111}1 / 1}i]X1, ...............................................................................................................................................................................................................
//..................................................................................................................................................................1K}'~""!!~~~~!!!!"""!!!""">>>>>>>>>>>>>>>>>>iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii>>>iiiiii+++++++/+++++++++///++++//++++//////////////////////////////1111}}}}}}]]lllllllll]}}IRK}1}}}}111}1}1}1i}Y+,.............................................................................................................................................................................................................
//..................................................................................................................................................................."R+'"~~~~~~~~~~~~~~!!"""""""" >> ">>"">i"ii!"+>iiiiiiiiiiiiiiiiiiiiiiiiiii>>>>>>>>>>>>iiiiiiiiii++++++++++++++++///////////////////////////////+////////111}}}}]lllllll]l]l]I#F]1}}}}}}}}}}}}111iIXi`..........................................................................................................................................................................................................
//...................................................................................................................................................................:II~'~~~~~~~~~~~~~~!!!""">>>>>>>>>"">">i+/i"iiiiiiiiiiiiiiiiiiiii>>>>>>>>>>"""""""">>>>>>>iiiiiiiiiii+++++++++//////////////////////////////////+++////1111}}]]lllllll*]*]}&#Y}}}}}}}}}]]}}}}}l11&Y!:........................................................................................................................................................................................................
//....................................................................................................................................................................; Fi; ~~~~~~~~~~~~~~~~~!!!!!!!> !!> !~"1K}"">>>" >> iii>>>>>>>> > "" >> > """""""" >> > """""""">>>>>>iiii > iiiiiiiiiiiiiii++++++///////////////////////+++++++++//////////1}]llllll]*]]]l##*]l}}]}]]]]]]]]}l1]}*E*,.......................................................................................................................................................................................................
//.....................................................................................................................................................................I}'~~~~~~~~~~~~~~~~!'~!~!!; ~!; ~iKF!"!!>>>">>>>>>>>"""""!!!!"""""""""""""""""""""">>>>>>>>>>>>>>>>>>iiiiiiii++++++//////////////////////////+++++//////1///11}]]llllllllll]XEF]}}}}}]]]]]]]]1l1l/]XY;.......................................................................................................................................................................................................
//..................................................................................................................................................................... / X~''~~'~~'~~~~~~~~'''!>'; +l#l"''!'~~~~~!!!!!!!!!!~~~!!!!!!""""""""""""""""""""""" > """">>>>>>>>>>>>>>>> > iiiiii++++/////////////////+++++++++++++++/////////111}]llllllllll*KEY}]1}}]]]]]]]]}]}]1}1I;.......................................................................................................................................................................................................
//.....................................................................................................................................................................iF!; '~''~~'''''~~~~~; !~~YE]~"'"; ''~~~~~~~''''''''~~~~!!!!!!!"!!"""""""""""""""""""""""""""""">>>>>>>>>>>>>>>>iii+++/////////////++++++++++++++++++++////////11}}]ll]**ll]IlX#&]}]}}]]]]]]]]}]}]1/}I;.......................................................................................................................................................................................................
//....................................................................................................................................................................."&!;~~~~''~'~~'", ~~IKR / ; '''~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!""!!!!""""""""""""""""""""""""""""">>>>>>>>>>>>>>>iii++++////++///++++++++++++++++++++/+/////////11}}]llllllll*lFEY]]]]]]]]]]]]]]]}}1]&]~;:....................................................................................................................................................................................................
//..................................................................................................................................................................... > F!, ~~''~'''!;;"}##]', ~!',!~~~~~~''~~~~~~~~~~~~~~~~~~~!!!!"!!!!!!!"!""""""""""""""""""""""""""""">>>>>>>>>>>>>>iii++++++++++++++++++++++++++++++++////////////11}]]lllllllllY#Rl}l]]]]]]]]]]]]]}1l#Y+*/`...................................................................................................................................................................................................
//.....................................................................................................................................................................1Y; '''~~;;~"*$X1;,!~'; ~~, '!~~~~''''''''''''''''~~~~~~~~~~~!!!!!!!!!!""""""""">""""""""""""">>""""""""""">>>>>>>>>>iiiiiiiiiiiiiiiiiii+++++++++++++//////////////1}}]]lllllll*X#Y]]]]]]]]]]]]]lll}*EI//IKi:.................................................................................................................................................................................................
//.....................................................................................................................................................................}}; `,''~~}#$1; '~'';'''''''''''''''''''~~~~~~~~~~~~~~~~~~~~~!!!!!!!!!""""""""""""""""""">>>i>i>>" > """>>>"""">>>>>>>>>>>ii>>>""">>>> > ii++++++++++++++ / ++//////////1}}]]lllllll]*R#]]}]]]]]]]l]]lll]IE*i1+XF!:................................................................................................................................................................................................
//....................................................................................................................................................................: / ~~'`/KRl,,''''~''~''''''''''''''''''~~~~~~~~~~~'''~~''''''''~~~!!!"""""""" > """""""""" >> > ii++iiiiii"""" >> """"""">>>"""""""">""" >> > ii++++++++++++++++++////////111}}}]]lllll]*lYRI]l]]]]]]]l]lllllFEli11/II!:...............................................................................................................................................................................................
//....................................................................................................................................................................'>;!lW&"~:'; '''';;; , ''''''''''''~~~~~~~~~~~~~~~'~~''~~''''''''~~~!!!"""""">>>>>>"""">>>>>iiii+/++ii>i>>>"!!~>>""""""""""""""">>>>iii++++++++++++++++++++///////1111}}}]]]]]l]l]*#&]}]]]]]]ll]l]*l*K#]1/111FX!:..............................................................................................................................................................................................
//....................................................................................................................................................................1 % K / ''''; , ;;;;;; ''''';;;'''~~~!!!~~~~~~''''''''''~~~~~~!!!!!!!!!"">>>>">>"""">""" >> "iii>>>ii+++ii+}*KKRK&FXY]]}11111+///////+11/++11/11/+/}]IllI***/++////////111111}}}]]]]]l}*]XR]}]]]]]]]ll]l]]]#R]}}}}}}#F'..............................................................................................................................................................................................
//..................................................................................................................................................................; YF",;`,,;;,;;;;;;;;;;;;;;;''~!!"""!!!~~~~~~~~~~~~~~~!!!!!!!~~> "!>}*/''!>i>!!!" >> ii >> > iiiiiiii + ii + / 1///////}l*IIYXF&&&RK&&KRK&K&&KK&&KRE$#KXYI}]//1i>+//////////111111}}}]]]]]l]l]*#*}}]]]]]]]]]l]]*#&]]]}1}1XEi:.............................................................................................................................................................................................
//...............................................................................................................................................................~Rl; .``.`````::::::::``,, , ;;;; '~!!""""""">""!!!!!""""""">""""""""!~~~~;;;>+lXKKX*"!~~!">>ii>>>>>i>>>>iiii+//////1++++/111}1////+++}IFK&Y]++/}/i/*I}+//+////////////111111}}}]]]]]]]]]}&&]]]]]]]]llllllXR*]l}}1]]l#l`.............................................................................................................................................................................................
//............................................................................................................................................................. > Rl:., `:.````````::::::::```,, ;;; '~"">>>>>>>>""""">>>""">>>>>>>>>>>i>>>>!!!!!~'; '~!}YRRXl1+'~!"""!!""""!!!" >> """>+//////1111//1*FKRE&*}1////1/++//+]RF1+//1//////////111111}}}]]]]]l}]]}XK]]]]]]]]l]*]llFRlll]l}}]]RY;.............................................................................................................................................................................................
//..........................................................................................................................................................~#}``:````````````````````::::``,, ;; '!">~>i">">>>>>>>>>>>>>>>>"ii>i+ii+>>ii>>>>>>>"""!"!~';; ~!> +]YKE$EFXXYI * **+}!'"!!~'!i1lXK#$ERY1 >> ++++++++++++++++ / > }i]#F > ]}//}/111111111111}}]]]]]]]]]]l&*]]}}}]]]*lll*FFl]*ll]]}]EY1!............................................................................................................................................................................................
//........................................................................................................................................................!R1``:; .````````````````````:::```,, ;; '~>">i">!">>>>>>iiiiiiiiii!>i>">}Xli"++>"i>>>>>>>>"""""!!"!!""!!">!"i1]**IK$$%##%EW$EERY}+>!~!>i>!!">>>>>>+++++++//++l+*#}11}111}111111111}}}}}]]]]]}]]]&Y]]}}]]]l*lll***l]*]l]]}YEI1]:...........................................................................................................................................................................................
//.....................................................................................................................................................; }l, ; .~::`````````````````````,, , , , , ;; '''~!!"i/~IK/>>>>>>ii++++++++/++i+iii++1l&E&1>>>""!!!""""!!!"""!!"ii>iii+++ii>i!*KX!"!""!""!~!!!"!!!">>iiiiii++++++//i//1++}F&l}1}/1111111}}}}}}}}}]]]]}]l}XIl]}}]]lll*l]ll]ll*ll}}IEY1+I`...........................................................................................................................................................................................
//..................................................................................................................................................., ] / `;````````````````,, , ```````,, , , , ;;;;;; '~~!!ii>>}F*>!>!i~+ii++++++++++++++i+++i+1]Y##*i""'!~~''~!"'~"!!!"" + i >> ii > "+>>+i+IEY1~;!+>;"""""""">>iiii+++++++++/+//11111YK*}1]/1111111}}}}}}}}]]]]]]]]l*]]}}]]llllllllll]]l]llRK}1}I`...........................................................................................................................................................................................
//.................................................................................................................................................:&*: , ':`````````````````````````,,;;;'';;;;;;''~">>>>+!>R*">!!">>>iiii+i++++++++++++///1+++ii]FEE#X]/i>>>>!~~">>1l*IFKKl1//++++1+/Y#R]"!">"!!"""">>>ii++++++++/+//111111]K&/1}11}}111}}}}}}}}}]]]]]]]]]]]}}]]llllllllll]*]]lKR]1/XI`...........................................................................................................................................................................................
//..................................................................................................................................................* / .~.`,`````````````````,`````,, ;;;;;;;;;; , , , , ; ~!i >> iiii]Eii;; !!!!">>iiiii+++++++++++++//++++++ii+}IF&#R###RX*/>""i+i>/II/>i//}//}+>l#R*++}}i!>>>>>>>i++++///++//11111}}lRY]/}}}}}}1}}}}}}}}}]]]]]]]]]]]}}]]llllllllll*]]]*#*}]}Kl`...........................................................................................................................................................................................
//...................................................................................................................................................'&]`,`,,,,````,,,````,,;;;;;;;;;;'';;;;;,,``,`,~">>ii++>+iF&>''!!;;!!!!""""">>>iiiii++++++++/+//1/+ii>>>iiii+i>/]KX]>iii/1}*XKKKKFI]1*>+#E*""">">"!+~>i++++/1////1111}1}]KK1}}}11}}}}}}}}}}}}}]]]]]]]]]]]]llllllllllll]lYKI}l1XR":...........................................................................................................................................................................................
//.....................................................................................................................................................I & ~, ````````,, , ```,;;; ';;'';;;;'';;;;,```````;~>iiii+++ii/#X,!'~, '~~~!!!"""">>>>iiii+++++++++++++ii>++>""/I&#&1>!">]Y&&Y]/>//++/+++11/+1FR&>>i"!!>!"">i+/++////111}]}]}lRF}111}}}}}}}}}}}}}}}]]]]]]}}}]lllllllllllll}l&F]I}l&R1:...........................................................................................................................................................................................
//......................................................................................................................................................`Kl',``,:``,, , , , , , ;;;; '''''';;;;;;;; , , ``````;'!!>i>/>/iii+!IRY!`~!'!"~''~!!!!""">>>>iiiiiii++ + ii++ * F##Y}i!> }XY& l + ">>i//i>>ii+++++++1++/1+/*E&]#&Y+i>>>iii+//////111]}}}lR&}}}}}}}}}}}}}}}}}}}}}}}}}}}]]lllllllllll]XF*]]lFKIFX'...........................................................................................................................................................................................
//......................................................................................................................................................., K}., `:``,, , , `,, ;; , ';;'`;; ''',';; , `:, :;; , `,, '~~">i++++ii+/1&&F&Y+;;''~'!; ~~!!""""iiiii++ + i > i + IKEX11 > "1XKRY}>"i + i"++++++++++//+///+//////+1i*EI~i}R&Ii'i!+///1++}11]}]}]IEX1]]}11}}}}}}}}}}]}}}/}}}}}]lllllllllllllIl*]]&&*}*F/`..........................................................................................................................................................................................
//........................................................................................................................................................`&l`,, `,, , ;;;; ''';;~', ~~`]E~'', `,`:; `1& / ``;; '~!">>ii+++++i>/"lE}i]RK&I]+!;,'';,;!>1lYF&&#]}' > *1R$WWEFYYI++i!~'''>>>>>>>>>>>ii++i/++////1111>}ER1>"'iFEl >> +i//+1+1]}]}}lFE*1}11}1}}}}}}}}}}1}111}}}}]llllllllllll]]*]IX}lll}}K*,.........................................................................................................................................................................................
//......................................................................................................................................................... / R!`,, ; ';;;;;;;;~''~`;]#}`'`,I]`,, .lY + X'``,;''!!">ii++++i+i}"~/&Ri;;!+]*IYF&&FX}}1+i>"!"Y+~/K&i"!'"/>"1l * YFKR#R########EE#######RK & Yl}1 / +i / i!IW * ~!i!~}# & +"+/////]}]}}}*#&]}111}}}}}}}}}}]}}1l1/}}}]llllllllllll]l]l}}*]}]/]&1:.........................................................................................................................................................................................
//.........................................................................................................................................................`KX:`'`;; , ';`''''`~1&I;,;`IR,.;,``,YX:1W/>X'`;~~!"" > i++++++++++i + i]#K1'>!'";1$],,'i!>>lF*]X"~, , !}FKI / > "'~~~';'!""""""" > '!>""++>~!;""i]I&&*XX#E}lEK+!i"!!]E#1i1//1}]]l]}X#F/}11}1}}}}}}1}]/11]Rl]]1]l]*lllllllll]*l]ll]llX#Y!...........................................................................................................................................................................................
//..........................................................................................................................................................1F; `;;; ',,!;,!,;l$l:~:`IE>,,`;`,`:YY:iE1.Y*,,~!!!"">i+++++ii++i!+/~>X#I!!"!!"*$!;!">i+~!"lR}&F1i!~~~!!~!~~''~!"!"!!/Y&E##$$$$$EEE$#&}">"!""!!1&RE$}""i>">*E&1+111ll}l]l##]/111}}}}}}}}}/}}]++F&}}lll]*llllllll*]*]1]ll&Rl'............................................................................................................................................................................................
//..........................................................................................................................................................'Y",;'';,'~; +ERi, `~:!$]~`,~}l, , , :`l&; :*E',;&+,;;;''~!">>i+++++i+/+>">i>+RR"' > ; , FR~, ~> !> Y#]XK'!~~'~~~'''!!;~1XRW%EI+"!~'~!~~"ii+}YYFE#/>!~XI'+>>"!> l$Y + "i>i~+E#Y/11]l1]]Y#&}1/}}}}}}}}}111}/1}/}IRY1]*lllllllll]***]]YK1':.............................................................................................................................................................................................
//..........................................................................................................................................................`]i`,''';,}WF~;', > , }E > , , `!& K:, `; : `1%1: > N}':,EX,;;;;;'~!!""ii + / 1ii / +ii + >> > iYR]~';F&!;!i"i">iEl`''~~~'''~IWE & FRE & !'I&]"!"!!!!"""!"&KW&~i~>!*X~>~~!"}iiF#/"ii+>!YE&}]]1*]}IER]}+/}}}11}}}1}}1/]/1}]*K&]]llllllllll]]I*XE}~`..............................................................................................................................................................................................
//..........................................................................................................................................................:i > `;`~ * Wl'!;;;;~lR~;,!,XW*,:",,,1ER/`~lRR,``1WX:'; `;; ''''~">>i+/+++++1>i>>""*El`i&+;;>"~> !FF';~]REN$%Xi;`Y%K+'~1EF & / '!!!!!!!!"&W]~~~i""!]&!XI~}Y/iii+*E]!"ii>>*#R]/l]]]&#I}//}/>}&X1+++/++/11}1/lYRX]****lll]l1*K#Y1*&>:.............................................................................................................................................................................................
//..........................................................................................................................................................::`;`YE1',~~; '' > & X`,, ; `XEF!`~`;`/Ri]K`:]I * Y'`'I#$~:, : , , ;;;;; ~!">+++++++/1++/+>"I# * iY','~"~~I#R$$$KR],;;,:/$&>;'I$YEF"~!!!!!!!!&&}~+ i'~"!' * F!FY'}&]iii+>>&*>>iii"/#E*}]l]Y#&}1/1i1}i+YR}++++/1/1}/]l*#F*ll*lll]*l*K&/i>>I*!:...........................................................................................................................................................................................
//..........................................................................................................................................................:`}$}, ','''';'KF; ~, `; > W * # + ; ',!`]$+,'IY`, / K"X},,/KI%l,```,,;;;,;~!>>i+++/++1/++i}"!/ RX!; , ]Y#$EREi`'`:, , ':,*l,'l$K1XR'~'!!!!!!!!"++i>" >> ~> "Y*iE}>iF&i/>iiiiii>1+>i+>]E#I/1lRR1}i//}1++111F&]+/1/111]]*1&RI]llllll]}FEl!>11iIKY,.........................................................................................................................................................................................
//.........................................................................................................................................................:!Kl, '';; !''~i#I',`;`+#1FF;;''' > EX; , `"K*'`YY`X]`;}WI&$1'::`;:; `,; '~!>i+i++++++++/11!>1KR!`:*XI%WK,,,.', :; ] * `>I$#"*#+';'~!>"!!">>>>>" >> i"""R]YX>i+*F]iiii>>>iiii+>i/+]K#I1}FR]+1////1111}1/FK1+}/11]l]]]F&Xll]]]]]}lI*/l/++>lR}.........................................................................................................................................................................................
//.......................................................................................................................................................:+R > , ~; !';!,!;]%i,````FK'YE!'''`~&#~,`', `}E!'&#E*R1~:YY`]W#&i,::', , , ; , , '!!">>iiii>/>+>>+>+}Y#F"::]N#~.:`:}Ri~1R$li1;;il&/;;''~!"">iii>>>>>>*K*F1+i/+KI>ii>"">iiii+i/iiii]RR/l#}/+////1111///1+lKY]+}]]l}]}YRY]l]]]]]}+*&&FY/iF#!.........................................................................................................................................................................................
//......................................................................................................................................................, * X, ",~;~'!!~~*$}:,:;:1E>~K&'!,~," % F'~`,:' + FNF, IY":Y*}FR#;'+K#$F}~',``,,;';'!">>>>"i>/!" >> !"1*$}:`'X@},:1$R#R%#}!i>I$R1,;`;;;;;'~!">>>>>>>>+IKF * ii}}iY& / > i > "" > iiii + i++ii + > ]KX}R]i >///1/111/+}//1/YRI11}}ll]lYKI]]]}}}]}]lFKRX&&!..........................................................................................................................................................................................
//....................................................................................................................................................:IX',', '~'; !!'l#E+,:``,}E+' > El'~'~, 1N], 'IR1`;'`"RY*@X~:*#!; ]R, ~, , "]F#$W#X}+>~;,;''''!!!!~~!!!'!'!,YF,'$N&F*]>"}KK]!.';,,,``,,,,,,,'~"" >> > i >> iXR&}i"Y#*i1Kl>!!"">>>i+++/++ii>"iIRY]~ii + 11 / 111//1111111]#Y]]}}]l]XR*ll]]]]]]]]I&RK1'..........................................................................................................................................................................................
//...................................................................................................................................................`XI';, '~!;~"~i#YRX;::,`'KF, ~+ W / ; !'''*#1l*'`'`,~, ; "IRYK};;'YF"'#I', `',`,, '!+]I###KI1>"~,`,,``,,''!~':"&i;}$IY#K}~`:`;,,'',,;;,,,,;;;'~!>>ii>+++#R]>i*#&1i+RX!'!" >> > i + / ++++ + i >> +"iFR/>i>i/1//1111111111/1+&#1]]]l}lK&*}]]]]]]]]]]FKY"`.........................................................................................................................................................................................
//..................................................................................................................................................~R",';;~'""!+#I`;$+`:.:`*$,,;]%}!~~''Y#>:,';`:,'`;!',,,iK&FE#*1KF#$i~;~',```,,::`,,,,,`"/++1]lKXKRFXXli>*F+,,',``;;``;,,,,,;,,,,,;''~!">iii>i]EK>i*FF&/++~X&"~"">ii+/1////+iii">!lK>">>i+11//1/111111111}+l&R}]}]]*RY]]]llll]]]l1*Y&};........................................................................................................................................................................................
//.................................................................................................................................................'&>`;`,;;!"']N]; .'$i::::;RF,:' / W]'~~!;I$/,,,;,,;:`;,`!lK%$W%$W$#R>,' / #&, , ';;', ;;;;;; , , ``;, `;:`}K / R":;,;>i]}#N*,;~``;`,,,,,,,,,,,,;;'~!!i>>iii/EF"/XR*R1+>"!lRi!!">>i+111111/+ii">iI*">>>i+/1//1//111///+1]}}/IE*}]]l&R}]]]lllll]]*l}XRI~`......................................................................................................................................................................................
//................................................................................................................................................ > F'.,;`;''~]NF"...;$i::`:'%]:; 'iE&'!!;; }@I, ;; :',;~]REW#1;!FRi:.,.,:`,`':: + &I~`,`;;;;; , , , ``';, 1XER!~, ';;,;`', ';:/}', , ; , `,, , , , , , , , , , ;; '!>i>>>>i#R+1&&iY#>+ii>!]#/'!">>i+111111//+i+i}Y" >> i">ii+11//////////1/}}]}]&K]]**#l]]]llllllllll]XRX", .....................................................................................................................................................................................
//...............................................................................................................................................`I',::; `;; ~F % X!...., %].:`:'W*:,'!F$!!~!, !N * Y$!`;!KEW#R]`;, `]EF.`.`,, ::, , `,, :`"i>~```````,`:, +##R / :, , ',,,,,', ',:,' : ~, , ; `,, , , , , , , , , , , ;; '!>i+>~I$F/XE}+&K>iii>i!]#}~!">>i+11111111/++1]+>i>i>ii+++/111/11//+/}}11}}]1FR]}X&I]]]llllll*lll]}}YR}':...................................................................................................................................................................................
//............................................................................................................................................., !# > `;`:.`'X%$I:......YW~: ..`Y$;; , >> $I"'',`RE"`}W & :~XWY`; & $ > `&$E`:, ; `,'`;:,,,,`````,```:`>]WK}~,,;,;;;;,,,,;,,,,,,,,;;,,,,,,,,,,,,,,;;;!!' / ]RlRYEIi / I#1 > / > ii >> "]#1'"!i >> ++11}11}}1}//1/i>ii>+ii}/+&#1+}+1+/i//1]]1]}/*KX]R&]llll]ll]*lIllll/]!X},..................................................................................................................................................................................
//.............................................................................................................................................'1R,::`.`~&$E&`.......`#I,:.:"$!,'~'X$/;~,:/Nl:`>RRI`/#1:"K$FK#R~:```,.;,'`,, , ``````````:`,``,, , ;; , ;;;; , , , , , , , , , , , , , , ; , , , , , , , , , , , , , , ; , '~"]Ii]R#Fi>}R&+"+"+i>>>"lR1~!">>++&X}}1}}11}1///+i+++i+ii}}+*R*}1+1}}+/lKI}}]}*l#Y&X]llll]l]II}lllll]}R&Xi:.................................................................................................................................................................................
//.............................................................................................................................................'F&.:.`:~ER%l:.........,RX`:..I$K;''~Y$i;```lN}:,.' & N * :, : `>RN~KR';.:'Ri:`;`,, , ``````,, `:::`,, , , , ```,, , , , , , , , , , , , , , , , , , , , , , , , , ; , , , , , ; '"!""iXE]1/"l$]!++i>i>>>>i"X&i~!!>+>i+&F]1}}1}1}////+//+1++111}/lRI+/}11/+]/FK]}}}lR&E}ll]ll]llXKY*lll*ll]*#Y;.................................................................................................................................................................................
//............................................................................................................................................., YK````:]$WX, ...........!$ / :`.!#$1, ~~, FE > ; `,`*@]., '`*%F;:&#K>!#1,,*E},;~!/:,,,,````,``````,`,,,``,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,~"iiIR*"/+/#&~>+>"1i>iiiii!XK]Yi'i / i / 1 + # * 1}}}}1}1/////++++1/+}1]1FFl1}]11//l}K&1l1]YFX]ll]ll]ll*KX*l*ll]*l}X&+`................................................................................................................................................................................
//..............................................................................................................................................!K}::.'&%K;.............,#W,:`}WRY`;;,,*%R}:.`1#&:.`i&%>,;,/Y##l``,,;,l&'`,, ``````,, , , , , , , , , , ``,, , , , , , , , , , , , , , , , , , , , , , , , , , ; `,; , , ''"l#Fii>i}E*+i!iiiiiiiiiii>>/KX!X]"i +///+]#l]]1]}}}111//////1111}]]lRI1}}]1]}1]]KF}]]Y&]]l]]*lllll&&ll*]lll]]}&R"................................................................................................................................................................................
//...............................................................................................................................................'E,,:'E$}...............!$], ., YF * #:; `':`>XKE] > ~~X#1, ; FWi',`;`,', `~, ; > K';`,`,`````,,,,,,,,,,,``,,,,,,,,,,,,,,,,,,,,,,,,,,,'; , , ; '1#F+">"1lR*+>iii>iiiiiiiii"+"}R};R*>+///11+&K]}}}]}}}}1/////111111]]}RX}}}1]}Yl]]X#]}}*I1Y&l*ll**llKK*l*]lll]]}XE/:...............................................................................................................................................................................
//.................................................................................................................................................]l."NI:................:1FR~`lR!RE`.`,.:,,Y$~``:,`,:}#I`;`,;::;'`E],,,``,,,,,``,,,,,,,,,,,```,,,,,,,,,,,,,,,,,,,,,,,,,,'iX&/!>" + / Y# * i >> > ii >> i"iiiiiiiii>>iFK>~KI" + 1//1111RFl1l}}}}}1///1111111}}1lXKl1]]]1Rl]]*K&}l}]}XK]Ill****K&]]*]ll*ll}I$l`...............................................................................................................................................................................
//.................................................................................................................................................."Il%/...................:,1#11K"i$*, ., .:. : ~&%}., `:: > &%}``'`:~: / % i`,; .; , , , , , , ``,, , , ``,, , , , , ````,, , , , , , , `,, ; , ; , `;, ```;"1}~,~i+IR$l"!i"" > iiiiiiiiiiiiiiii""}E * ~+ R} >//1111}}FKl]}]]]]}1111111111}}]}]YRl]}}]lR*}]]KK]l}1]XK]l*l*llYRX}X&I**]l]}IE]`...............................................................................................................................................................................
//...................................................................................................................................................:IR; ........................`1$E*`/@X'.::::.!INW/,,X$$],' > lWX";,,,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,;!]]l**IX&&&*i',;!"~'~!!>iiiii>>>>>iiiiiii>>KKi;lR++/}1}}}11]RF}]l]]]}}111}}}}}}}}}]}YR*]]]]X#}ll]I#I}]1]&&ll***llKKllKF]lllll}XE]`...............................................................................................................................................................................
//....................................................................................................................................................; &; ...........................:~I& > i#$Kl > ~> 1i; "+]F&EW#YE$#>,',,:;`:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;`,`,````:``,,,;',';:;;;~'~~>i>>>>>>>>iiiiiii!]E]!!KYi//}1}}}}1}R&]]]]]]]}111}}}}}}}]]l}XK*}]]lK&]l]lY#Y]]1*KXl**l**YRF]YKIl*l*]l]REi:...............................................................................................................................................................................
//....................................................................................................................................................., !.................................:!l$::..::`:; *# % WI"`,``:````,,,,,,,,``,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`````,,,,,,,,,,,,,;;;'~!" >> ii>>>>i > ii++ > "/RY!~F&>i/}}}}}}]]}XRl]]]]]}}11}}}}}}}}]]]l&&l]l]X#*ll*lIR*1]]YKllIl*lYRFlI#F*ll*l]}Y&}`................................................................................................................................................................................
//......................................................................................................................................................:.................................~#Y.:, , ::`'F$##}, :., `:; :, , , , , , , `,, , , ``,, `,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ;; , ; , , '~!">>ii>>>>>iii>i>iX#1'}R1"/1}}1}}}]]}XRll]]]]}}}}}}}}}}}]]lllRF}lIl#&]llllX#*]]]KFl***]lKRY]&R*l*lll]]#F!:................................................................................................................................................................................
//.....................................................................................................................................................................................`Y#~; ``:.::``.`;"&#/~.:``:```````,,,,,,```,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,;~!" >> > ii>>>>ii > i > +> l$}'*#]"/}}1}}}}}]l]FRll]l]]]}}}}}}}}}]]]llYK**llR&]Illll&Kl}lFKl]]]l*K&I]RRl]lIl]]}XI!..................................................................................................................................................................................
//.................................................................................................................................................................................... / $I; , ::, `:::`;:, ``*% E$EKl * 1, :```:, :, ; `;, , :'`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;,,;,;;;"!i>>>>>>>>>>>"+i!1#F>1KX'i}}}}}}}}]}*]KKl}]ll]}}}}}}}}}}]]]l1R&]]}&RI]]l}**#I]l* EY1l]I]FR*]KRX*** ll]l* K + `..................................................................................................................................................................................
//...................................................................................................................................................................................:I**; '', : > E * ~`;``::: * $F; 'i*E$Y}!]IYE#F$F;,;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,;,'">i>>>>>>>>>>" > i">KK>lE]" + 1 / }}}}}}}] *] * RXl * l]]]}}}}}}}}}]]]] / F#I}l & K * l * Ill]K# * 1Y#I]l]IFKF1I#Xl] * *lllll]'....................................................................................................................................................................................
//....................................................................................................................................................................................:, ]X, ~`! & #].;; :, . : , '&W!`:..;/RR"`;,&E,`,`;`,,,,,``,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,;,'; ~">ii>>>>>>>>>i"iiXE + }El!"1/1}}}}}}]l}]FR*}*]}}}}}}}}}}}}}]]]]F&I]XRI]l]l]]Y#F/IRX}l}*RRY/X#Y]]ll]}1/lI!:....................................................................................................................................................................................
//.......................................................................................................................................................................................'K,/RYI,':, , '::,:*%%>:`.:;;,`Y$!:,,,,,````,,,``,,,,,,,,,,`::,``,,,,````,,```,,,,,,,,,;,;;~;'>>>>i>>>>>>>>i"i/FR/#R>~+i111/]}1}}]l]I#I}ll}111}}}}}1}}}]]]]&R*}#&l}]l]}l]KF1IRl}}+1]1}*#K1}}]1}]l+F>,......................................................................................................................................................................................
//........................................................................................................................................................................................'KFYF`', ~~`+ > `:`I#E@!:; : ; : `',, '`,,,,,````,,,,`,,,,,,,,,,:,,,,,`````````,``,,,,,,,,,,;;;;;;~i>>>i>>>>>>>>!>!XKlKF"!i$I++Il1/}}}]]l&Kl]]]}111}}}}}}}]}]]1I#I1E&/}}l}I]1KR1K&l+}+i/1>*EY/}}}}11i1l;........................................................................................................................................................................................
//.......................................................................................................................................................................................lKiKl`';; ''#}.:`: && :l % K : ',`;;;';; , , , , `````,, , , , , , , , , , , , , , ',,,``,,~,:`````,,``,,,,,,,,,,,,;!i">>>>>>>>>>>>>+#FY#i!!>R&++FK1}]]}}]l&Kl}}1/+11111111111}}}IK*FR}1}/i"i"+X&I#Xl]Yl]*l*$RFX]}""!~,:...........................................................................................................................................................................................
//.....................................................................................................................................................................................:F * ~$], ~;;; 'F*!,`::X1:`>E%i,';;;;;;; , , , ```,``,, , , , , , , , , , , , , > +I & K#Fi~; , , , ```,, , , , , `,, , , , ````~i + !>>>>>>>>>>>>+# & YK!> ~!F#}i * K]111}]}]XRl + } / 1 / 1}1111111 / ] / 1}Y#YKY1 +//i*FRREKR$FK#K#ERK$KK]+>}X",:..............................................................................................................................................................................................
//..................................................................................................................................................................................:IY; : lR!, !; !'~FY''``:1X$1:``>$%X`~,;`,;,,,,,,,,`,'; :`~ + IKF / ; `,, , , ',;;,,,,,``````,,,,,,`::```'">>>>>>>>!i!/"'+#F*R"~""iYRl"Y#]i1}1}1}KF]1+++++//11}]*IYIX1+/FXl/*&RX+;:........................................................................................................................................................................................................................
//.................................................................................................................................................................................*Y; .:*F"'~''!"]K"''`:`RY~FK":',Y$N1,,~,;;;;;;;;,,,,``!}', ``,, `:; , `;`;; , , , , , ``````````::::::`'!">>>>>>>>>~i~>I#*FY~i>"i]#l > lR] / 1++11}KK1 / 1}1++]IKK& Yl1++i/*YI111+",.............................................................................................................................................................................................................................
//.............................................................................................................................................................................:1K,..:]R'!~,'!~!]&i~'`,:X%}+>iIRF+/>&NEF'';;;;;;;;,,,,,`,',,`,;,`:``,;```:,,,`::::::::::::.:`;'!>i>>>>>>>>!i"YR/Kl'"!~">F&+iY&/!+/+1i}R]++il&&*1++]1//1111i&KY}/+'................................................................................................................................................................................................................................
//...........................................................................................................................................................................:*F'...;*R;;,`''!">FX!':``1E#]+1/11}}**}i&$WF';';':';;;,,,,,,,,,,,,,,,,,,``,,,,``::::::::::::``;'!">>i>>!>!+~"l$}>1"~;"'!!FE/>FI>>i}]YIYR]>1/&Y1+}]/+1111//}11&R]+++'................................................................................................................................................................................................................................
//........................................................................................................................................................................:}X;....`/W>'':';!"~'*Ki,`::/#E&}}}1}}}YK1}]&++$$%1'>,',;;;,,,,,,,,,,,,,,,,,,,````::::::::::::``;'~">>>>>"1!!IRF+''!>'";'!]l$EYW&+i>~>""i&l1/+/11}1+/11/1111//}/l#R*IKKX+,..............................................................................................................................................................................................................................
//......................................................................................................................................................................."#+:...../RFl';,,!~~!}EY!;:`;FK#&}}]]}]}*K}}IR1l"]$$#",!';;;;,,,,,,,,,,,,,,,,,,```::::::.:::::`,;'~">>>>>+"*Yl+>'>"!;!>]FK&WX'1K}'""i"~>+]}+1+i111++1}11//111/1}/*#Kl}]}*YKK]~`:.........................................................................................................................................................................................................................
//...................................................................................................................................................................../l"`......I#Y'';';;!~ilEE},.`,YKYKF}}}]]}]*#llEl}1/>/F]&W$Y'',`!```,,,,,``````````::::::::::::`,;''!!>>>>>>/"""'~"~~YF$K}""`]F]>">i>>>>>>>>i+//////1////1111/111}}1lERYIYIXIIl]]*YYY1~:....................................................................................................................................................................................................................
//....................................................................................................................................................................+}::.......+E~~,;;`'!~l&*R/`::!EIlRI}}}]]]]lR*R&}]}1]KX"!>l%NF"'':,`,,,``````````:::::::::::::`;;;'!">>>>>>>i"!!~~!~!/FF#R;,',``;~!!>>>>>>>>>i++////////++//11111}}1*#RXIFKRFFXYIl]}}}}l+`..................................................................................................................................................................................................................
//...................................................................................................................................................................Y;..........Yl',`;,',!]K!*K>`:;I#/Y#*}}}}}]]lRX#I1}}Y#]]]"~/+"+F$W+.`,,,```::::::::::::::::::`;';;~"">>>"""!!!'~!'/K$EI,;``,;`;~;:,!!!!!""">>>>>>>>iiiiii+//111}}1}}1*ER&KRXYYXXXXYYYI*]}/ll~:...............................................................................................................................................................................................................
//..................................................................................................................................................................";...........&I,;:`,;;iK*'I&~:,;KKiYR*/1}]l1}*KEK}l / FKlIYXXXY * 1IK#$$$X; , :'.:``:``::..:::.:::``;;'~!!""!> i~!"'~!'iF%#]~`,,,,,,,,,,`,;'''~~!">>>>>>>>>> > ii++//11/}}111}1*##R&IYXYYYYYYYY*I***]IFi:..............................................................................................................................................................................................................
//..................................................................................................................................................................`,...........YF`;::; , '*R~!YK!:."EXiF#l11}]11lII]/"''";;,,`........`:.,lXE1`:::`..::..::::::,;~;!"""""""~>"~;iW%l,```:;:::`::::```:`,;'''~~~!!""""""">>ii++//11}}1/1}}/I#RXIIXYIIIIIIIIIYII*llKK"..............................................................................................................................................................................................................
//...............................................................................................................................................................................i#~::`,`'*R'~*K"::~RFiYRl+/i*X]', , `......................:.~l * X!`., , `::.::```,'~'!!"""!~~!~"l$ % I; .:, : , .`::::::::::::::, ; ''~~~~~!""""""">>ii++//111/1}/i}XEF*************IIIIY**]KR>:.............................................................................................................................................................................................................
//................................................................................................................................................................................I&, :`.`;* K + '1#]:`,I#"YR]}}>;:.................................' + ; ~':`.`.::,';; !~""!"+lK%W#];:,.:::::::`:::::::::::::``;';'~!!"""""""">>>>+i>+/+//ii/lRE&IIIIII**ll*IIIIIIYYYl*}R#i:.............................................................................................................................................................................................................
//................................................................................................................................................................................`*1`:`:`+K / ~iFI~`, > E] * #F1; :.....................................`1#F; :`: : ',,;~"~~1*$ERW}l&N&,.,::::::``:::::::::::````;''~~!""""""""">>>>i//>>//>}Y#$&**IIII******IIIIIYYYYY**}RE>:.............................................................................................................................................................................................................
//................................................................................................................................................................................. : }R.`:, ; iFl:1# / , , `iXX# / `..........................................:"*+!`"~"+XW%K*}+/}11l}1Y&#KY'`:`::::::::::::::````;''~~~!!!!!!!"">>" > i + i"}&##YIFXYXYIIII****IIYYYYYYYYYYII]##>:.............................................................................................................................................................................................................
//................................................................................................................................................................................... / E::`:'~FX!*&;;,:iXK/`.............................................,>RN%@#K]"`~,,;,"/1]}}+l&K%],.:::::::::::::::``,;''~~~~!!!!!!"""""""+YERYYIYI*YYIYII******IYYYYYYYXXXXIYlRF!..............................................................................................................................................................................................................
//.....................................................................................................................................................................................`ii':.::`; > l, :, , ,/*'..............................................:F1;,``,:,,```,;;'"+1}]]}IF#*,.`:::`:..:`::::`,;'~~'~~!~~~"!!'~/##Fl]*YIlIIIIII****IIIIYYYYYYYYYYYYXFYYFX!`..............................................................................................................................................................................................................
//.................................................................................................................................................................................................`'`.`:................................................:F]`:;',,,,,,,,,,;;~">/]l*l]XEF>`.`,`:::.::::``,'''''''~~~'~+REX1}]l****IIIII**ll*IIYYYYYYYYYYYYYXFXXKR#>,...............................................................................................................................................................................................................
//.......................................................................................................................................................................................................................................................`X/;;;'',;;,,;;;;,~~;'~>+1}]l*l*&%X>`::``:::::`,;''~';'+IEKI/]]**l****I******ll**YYYYXXYYYYYYYYYYFXE&F&*F!:..............................................................................................................................................................................................................
//.......................................................................................................................................................................................................................................................:]>;~'~,''';;;;;;'''~!">>i+1}]ll**YR%X~.`':`,:::`!,,+FEKY]11}l**lIII********lll*IYYYYXXXXXYIYFXYX#E*YKY]]F;..............................................................................................................................................................................................................
//........................................................................................................................................................................................................................................................:`"Y1:"'''''';;;''~~~~!"">>i+1]l]llI//YE&#XX&IX###F]/}llII*****I**I***********IYYYXXXXXXXXXYYK#KXYYXF#&&EF",............................................................................................................................................................................................................
//.........................................................................................................................................................................................................................................................:,'Y$I,;'''';;;;;''~!!!!">">>/1]XllIl/}/+1X##$E]//}]}lX**IIIIII*II**lll*****IIYYXXXXXXXFXYXKR&YXXYXXW&&*E$&>`..........................................................................................................................................................................................................
//....................................................................................................................................................................................................................................................::::,1*YK/,F#+`'"';,;;;;'~!!">>>>>>>/'1}]YlX#E&#R1/}ll*II***IIII****II**ll**II**IIYYYXXXFXXYYXRRFXXXXXXYYEK/1ER$#RF]>,......................................................................................................................................................................................................
//................................................................................................................................................................................................................................................:::,'/X&K#RF~:,;~FR+;~!~'~';;'!!">>>""""">>+}&$Y]KR}}*]YIII****II***I***I*lll*III***IYXXXXXXXXXYFEKYYYXXYXXXK#FRYK/}YXKEKKX}";:.................................................................................................................................................................................................
//.........................................................................................................................................................................................................................................:,;;!]&E#KI>'/R#$l'``.,,,."K#l~!!""!'''~!>""!!!~"!>/>+YXY*II*IYII****III***lllIIIIII****IYXYYYYXXXXYY&#&FXXXXYF&FX&#}>*ER]/+//11/*#ERR#EYi;`...........................................................................................................................................................................................
//.....................................................................................................................................................................................................................................:,,;>lRE#YY"'>""]&E#*R],;`:`.:~;"R$}"!>""!;~~!!!!!"!">i/1}]IIYYIYYI*IIYYYII]]]]]l*YYYII***IIIYYIYYX&YFlY$KYYYXFFXXF&X&E*i1l#E]+1+/1}}}}}]llKK#E$K*>,.......................................................................................................................................................................................
//............................................................................................................................................................................................................................``:`;"ilKK&RXl+i>>>>">ii}#R*El]&;`,:.``.`~~;+&#l>""!!""!!!""i+/1}]l*IIIYI**IIYYYYI*ll]]*XFFXII**IIYYYYYYYYYXF]X#&IIYXXXXXFXXFR#}1+/1#$Y++i++111111}}/111}]llY&##R&I>;:..............................................................................................................................................................................
//........................................................................................................................................................................................................................:``,~/lF&X/">>!>"i>"!>>i"!+REY,XF!~F$Y`::`:``:;~"~/KR]>">>>>>>>ii+1}}]*I****]lIXYYYYI***YYYFFFXX*IYYYIII*IYY**IY&RKIIYYYXXXFFFF&#K11i/i>#EFi++++//111111111/1}]l111}}*FEE#*i':..........................................................................................................................................................................
//.................................................................................................................................................................................................................:,;;!}XEE&}"!>+>>>>>"">>!>/>!1&WY!!ii}$""!">/XN&``:.::.``!"!*E#++i~i'~i>+1}]ll*]}}}**XXXXIlIYYXXXFXYYIIIIYI*IYIIIYKE#F*l*YXXYXXKX&R&&EX11//++++}$RX>++////1111111111}}}]]]]}}1//111}*FR#KI+'`:.................................................................................................................................................................
//...............................................................................................................................................;..........................................................:`,'i}*F##KX]i!">""">">">ii!!>+""/*F*+">!+">N>"""""!"+K%]`,:::`,.`"~"Y%Y"">~!;'!"i1}}]}1}***II*llIIIIYYYIIIIIYYIIIIYFFR$E&l}]l*IYXFXFFF##E#El///++++++/E#*i/i+//////11111111}}}}}}}}}1////111/}lYX&RKIi~,:............................................................................................................................................................
//................................................................................................................................................................................................::`,'"/I#ERXl/>>!~!>>>""">ii>>>i>>ii"~+I#&li!">!>>"'*R$Y"">>">>!/#EK}~"!';`::`,;:i;,,`,:::`;"i+/+}lll*]}}]llll}ii/]*IYIIY**I&#RFYl}}]]lIYYXFFF&KR$RR}+ii+++++++++FE1++i+//////1111111111111}}}}}]]}}1//111]l]}}}}]*XKR*/!, :.....................................................................................................................................................
//............................................................................................................................................................................................:: : `~ + ] * FFl + ~~">>>>!>>>""""!>"""">>>i"!+ XEF + !~">"!">>!~*W#}~>" > "!"i > i > IWRl"~"~~~, ::::`., `.`.:::`'!!"1]l]*1+1]ll]}>~~" + }*****lIKEK* l*** ll]lIYYXF&& KREEEF / ii"i++++++++iIW}1+++//////////111111111111}}}}}}}]]]]]l]]ll]l]lll]}]Y&RX/;:.................................................................................................................................................
//.....................................................................................................................................................................................:`:`'+I# % E & l1i!!!!!""""""!!!!!!!!!"~!!!!" > il}i""""~!> !"!'""'}$Ri!~>" >> > ">>>" > ~> XWK / "!>>~;:::::::::..::::`'" > ++!~> / 1i + / !``;i > +11iIE# & Y}K#]l] * ll * *IYYX & FFEER#Y > ii + ii++++++++ + i + $Ki"+////////////////111111111111111}}}}]]]]]]]]]]]]]]]]]]l*IYKF]!:...........................................................................................................................................
//................................................................................................................................................................................:``;!] & E%% #I + !'!!!!!!!!!!!~~~~~~~~~~~~~~''~~!"""'!> "';'!!'~''~,:X$I;'!'~" >> "">>>>!">>YWK+!>>!~,:::::::::::..:,''~',,~i+i++~,`;i+ii+KEKYllX#X}]}}lll*IIYXFYF##IlK}/iii+ii++++++++i+&$+!+++++++////////////////11111111}}}}}}}}]]]]]]]]]]]lllllllllIFKRF}~:.......................................................................................................................................
//............................................................................................................................................................................:!l & # % R1';;`'~~''';,,,,,`:::,,,;;;,,,,,,,;;'; ''';,,;``;'; , , ; ``,'`"R@}:`:,~,;"">"">>">>!>>!}EW]>i>!~;,``:::::::.::::``,~>i>>i,:~>""+X#KFY*XX&RX*l]]I****IIIYXXR$Kl}XE*!/+i/+iiiiii+++ii]%Y!i1+++++++++///////////////////////11}}}}}}]]]]]]]]]ll*llllllllll*YR#RX/;:.................................................................................................................................
//........................................................................................................................................................................:; , XRKWX!``';, ';,```````````````````````````````````````,``,,```.':!FE#'::::``,'; '!""">>>">>">"*E#li>"!!'; , `````:`::::``,~"i+i~;`"!> / #RKYIXX * YKRIllllll * ***I * YYXREKI * lX#] > ++ > +> iiiiiiiiii">RE]+++//+++/////////////////1///////////111}}}}]]]]]]]l***********lll**IFRERYl"; :............................................................................................................................
//......................................................................................................................................................................'IF$$}...:.`:.::::::::::::.......:::::::::::::::::::::::::.`:.:::``*W$*:``:::::::`,;~!"">i>>>">>""}E$I//1++>~';;;;;;; ';,,;">>"!!">>>&E*KKF&XXKEKI*II*******l*I]YKE#&*YYIF#]"ii>+""~~~~~!!!>>"/RE1/++++++++////////////+iiiiii>>iiiiiiii++++/11}}}]]]llllllllllllll]]]}}}]*IlIXKKl>:.......................................................................................................................
//...............................................................................................................................................`....................~&#@R.:, .; ::::`:..:`:::::::::::.....::::::::::::::::::::::::::.::.'}%X~.;`..:::::::`,;'~!"">>>>>>"i""X%$l+1}1/i"~~''~!">>ii>""!>+11}&RF#XKKXY&EEF]]YII**l**l]**l*RER&*IYYYXE]" >> > i!!~~~~~~~~!!!!lWF++++++++++++++++++ + / +> ">i>>>>>>iiiiiiiiiii++++/111}}]]]]]]]l]]]]l]]ll]}}}l}11}IYRR1`.....................................................................................................................
//...................................................................................................................................................................1E; X%}:`:`::::::::::::::::::::::::::::::::::::::::::::::::..::`.`1ER!, `:::::`::::::::`,''!">">>>>>>>>+XKEEI]lI* l} + > "!>i+/1}}}i!>1}}IK&&KKFRK&#E&III*II**l]]]]11}IEXF#*YIXXYKE}!"!!~~~~~~~~~~~'~!'!I%& > / ++ + iii++iiiiiiii>>>> > iii >> iiiiiiiiiiiiiii++++++++++ / 1}}}]]]]]]]lll]]]]}}}}}]]]K#Y / :...................................................................................................................
//..................................................................................................................................................................; &]l > `'.`:::`::::::::::::::::::::::::::::::::::::::::::.. : . : `:`. + $Ei.`::::::::::::::::`,; '!">">>>>>>>>iF*YW$*]***l]}/ii+1}]l**]}]**X&&K#KKKFFR$&YYYI*ll]]}}}}}1}]RF]RX*YYFXIKE1~!~~~~~~~~~~~~~'~'!'!KEl > i / iii++iiiiii > """!!!">>>>iiiiiiiiiiiii++++++++++iiii++//11}}}}}}}}}}}}}}}}}}}]/KRF+:..................................................................................................................
//.................................................................................................................................................................`#IFi`.``:`:::::::::::::::::::::::::::::::::::::::::::::`:``.; }W& i`.`;.::::::::::::::::.:, '~"">>>>>>>>!iR}!lWF1}]llllll]]]ll*IIIYFK&KRRKKRYI&#XYII*]}}}}}}}}}}}1l#I1Y&*IXYXXI&E1~!~~~!~~~~~~~~~~~~~''"KWY+i+ii>iii>>"">!!!~~~~!!!""">>>iiiiiiii++iiiiiiiiiiiiiiiiiiiii+i++//////111111}}+IRR],.................................................................................................................
//................................................................................................................................................................ : *# & / `.````::::````::::::::::::::::::::::::::::::::::::::.. : ..'+KWEYi::,`,`.`:``::::::::::`,'!>> > i >> ">i" / R}i > * W * / I * 1] * **l * *II * IYF##F && K & KF * 1KWIlI * l]}11}}]]]}}}}}K&]llXYYYYFYI & E / ~> "!!!~~~~~~~~~~~!~~~!!#$l+i!ii>ii>>""!!!~~~~!!!!!!!!"">iiiiiii++++ii++iiiiiiiiiiiiiiiiiiiiiiii++/1}11/}/+]EK/.................................................................................................................
//................................................................................................................................................................]W$}:; : `````::::::`::::::::::::::::::::::::::::::::::::::::..``:.::.'lEWI!:,;`,`,,,``:::::::,!>">>>>>>i>1R]+1>1K#+~i]1>++}lllIXFFR#R&YY**1F%&}}I]]}}}]]]]]]]]}}]}lll]lFYYYYFYI&E/~>>"""""!!!~~~~~~~~~~~!~/%E1>"+>>>>>"""~~~~~~~~~~!!!~!!!!!"">>>ii+++++++iiiiiiiiiiiiiiiiiiiiiiii+++++//+11+]KE~................................................................................................................
//...............................................................................................................................................................'R%l:,.`:`````:::::::::::::::::::::::::::::::::::::::::::`..:::::`:.:,::~*$#1,:;;;;;;,,,,,``,,'">>>>i>"i > }R*/////I#Yi;~i,:~+}]lYFYF##Yl]]}&$&}}l]]]]]l*lllI]l]/]]*F]}I*]IIYYXII&E1!>>"""""""!!!~~~~~~~~~~!~~K$F+">>>>""!!~~~~~~~~~~!!!!!!!!!!!!""">>iii++iiiiiiiiiiiiiiiiiiiiiiiiiiii++/1//+//l#]................................................................................................................
//..............................................................................................................................................................`XN*; :```.````:::::::::::::::::::.::::::::::::::::::::::::::::::::``,, , , '~,,,1$R>:",!';; ',,`,;''!>"""i>"i+l#I}1111/}/i/XY1;::' > i + 1]]] & $X / }E#]11] / ]}lIII * *l}l}l]}F#}]l * ***I * IIY * *K#1"i" >> """""!!!!!!!!!!!!"''"!,1E$I~~>~~'''''~~~~~~~!!~~~!!!!!!!""""""">>>>iiiiiiiiiiiiiiiiiiiiiiiiiii++////1/}iYK~...............................................................................................................
//..............................................................................................................................................................!RE".:``.:````::::::::::::::::::::::::::::::::::::::::::::::::::::``,;'';,,`,,;>*Ri`,';,'',,,;;~!!" + i >> !i1l#I}}}}}]}1} > !!+ ] + !; '">>>i!~}RERF}+]/1]I*IYYI**l*]l}IRY11}]lll***I*I]lRE1"i"">""""""!!!!!!"!~~~~~!''!;~IWE}!~'',''''~~~~~~!!~~~!!!!!!!""""""""">>>>ii>iiiiiiiiiiiiiiiiiiiiii++///+1//+]F+...............................................................................................................
//.............................................................................................................................................................`Y%":``.``:````````:::::::::::::::::::::::.:::::::::::::::::::::::::`,,,,;;,,';,;',,'>+!'',';''',;!IK##X+"il#I}]]]]]lll1 / +>>>> > !';;;'!>> i +//}}]*I*YYYYI***l]*RK}/}]}}]]]ll*]*l*}]KE1">"""""""""!!!!"!!!!!~''~~~"]KNW*+~,';,'''~~~~~~~!!~~~!!!!!!!""""""""">">>>>>>i>>>iiiiiiii>>>>>iiiii++//111/1/*R>..............................................................................................................
//............................................................................................................................................................:i % I, `::::`:````````::::::::::::::::::::::..::::::::::::::::::::::::::`,;;;;;;;;; ``~, ~; ';;'; ',,>YEKI++>>>i+>*EY]lllll]]l11++>+/iii>~'!">+//1}]*IIYYIYYYII**lY$l1]1*1]]lllll*}lll}]KE1" > !"""" > ""!!!!"!"""!!">'"l#EF}!; !~'''!;''~~~~~~~~!!~~~!!!!!!!""""""""">>>>>>>>>>>>iiiiiiiiiiiiiiiiii++//}/11//}FI:.............................................................................................................
//............................................................................................................................................................!EF~``,, ``:`````````::::::::::::::::::::::::.::::::::::::::::::::::::::::``,';,;'';;`', '':*$F > ; , ::, , !> i >> ii > lEY]llllll]]]]}}]}1//+++i+/1}]llIIYYIIYXXlY***#K]}}ll]l}llllllllll]l}]EE/!++i/lYR#E#*"!+i~i~"XFF1"!>>~'!~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!""""""">>>>>>>>>>>>>>>>>iiiiiiiiiiiiii+//1111111YF~.............................................................................................................
//............................................................................................................................................................1N]`:`````````````::::::::::::````::::::::::::::::::::::::::::::::::````,, , , , ; , , ; ~',;~~*X'~.., , ..:, ; ~!"" > """]EY]lllll]]]]]]}]]]}}}11/1}]]l*I*IIIIIYYYF*lFEF}]}*]]Illllllllllll]]1]##1""i>>!~'~!~i*K#*!/*+>", i"!!~!"~!!!~~~~~~~~~~~~~~~~~~!!!!!!!!!!!!""""">>>>>>>>>>>>>>>>>>>>iiiiiiiii>>i++//111111]&Y:............................................................................................................
//........................................................................................................................................................... > #Ri:; , , `````````::::::::::::````````````:``````:::::::::::::::::::::, , , , , , , ;; ',:~*R$F~`:.,:.`::`::,,'~!"""!!]EY]lllll]]]]]]]]]]]}}11/1}}]l*I*IIIIYYY*l#Rl]*}*]I**I*Illlll]]]]]]]}]#R+i!i!!!" > ""!!!!!~~/ +~~""~!~~!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""">>>>>>>>>>>>>>>>>>>>>iiiii>iiiiiii//111111]FR]............................................................................................................
//..........................................................................................................................................................:*%]`,, , , , `::``````:::`,., :.::::````````````````````````,`...`:::::````,; `..:`!* $% K1':```:::::::::::`,;'!"""""]EX]]]}]]]]]]]]]]]]]}111/1}}]]l**l*IIllYKKX*ll***IIIIII*lll]]]]]]]}]}]#R/" >> !"!"""""""""!"""~~}E>""!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""">>>>>>>>>>>>>>>>>>ii > i>>>>>>iiii / 111111}*RF, ...........................................................................................................
//.........................................................................................................................................................:"NY,``,,,,`````````:::,`iRFK':``,,````````````````````````::`,`:```:``,~iIENEX;,```:::``:::::::::::::`,'!" > ii > ]EY}}}}]}}}]]]}}]]]}}11111}}]]l*] * *]]YK & *l * I * *I * IIIIYI * llll]]]]]}]}}}]#R / "" > !"!!"""""!!"!""!!>"~iE# / !~~> !!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!"""""""""">>>>>>>>>>i>>i" > ii"+>i>>>>>>>>i+111111+lFR/...........................................................................................................
//........................................................................................................................................................., XR",:,,,,,````````::::,.:,I$E~,,,,``,,,,``````````````;,,,,```,,'iI#WWEWR}':`,,,`::::``::::::::::::::`,'~" > ii > ]EY}}}}]]]]]]]]}]}}}1111111}}]]lll]ll]]]l*** IIIIYYYYYI* lll]]]}}]}]}}}]#R / """!!!!""""!!!""!!""!!"i!"IEXi>!!!!!!!!!!""""!!!!!!!!!!!"""!!!!""""""""">>>>>>>>>>i>" > +}Iii>>>>iii>>>>>>+/ 11111 / ]FEl:..........................................................................................................
//........................................................................................................................................................ : 1E~```,, , , , ```````::::::::``>#E}; ';;,``,,,,````````````,:`:*#R*1'; ::., ., , , ```````````````::::::::::::``,'!">ii>]EY}}}]]]]]]}}}]]}11////11111}]]]]]]ll****IIIIIYYYYYYY*]l]]]]]]]}]}}1lER/"">~"!!"""!!!!!!!!"!""">!~""!+l$EX+~~!~>>!!!"""">>!!!~"""!!!!"""""""""">>>>>>>>>>">">!i#R>i>i>>>>iiii>>>i+/////1/*#R1:.........................................................................................................
//........................................................................................................................................................, & Y, , , ``,, , , `:`````:::::```,, :+W$ / , ; , `,, , , , , `````````````,.`, > RI':`', .; :``````````````````:::::::::::``,, '~">ii>]EY}}}]]]]]]}}}}}}1///////1111}}]]]llll***IIIIIYYYYYYIl]]]]]]}}}}}}]}]#R+!!"~!!!""""!!!!!!!!""""~">!!""~!~>*#EX]ii>"!~!!";~"!""~""""""""""""">>>>>>>>>>>">>>i">F$}>>i>>>>>>>>>>>>ii++///1+]&#Y;.........................................................................................................
//.......................................................................................................................................................:}R';`,`,,,,,`::`::::::```,'''';l#El;', ; `,, , , `````````````:`::`~ : ~*$l':', ``````````````````:::::::::::``,, '~!"ii>]EY}}}]]]]]]}}111////////////11}}]lllll*****IIIYYIYYI*]]]]]]}}}}}}}]}]#K/~""!!"!!!!!!!!!!!!!!!""!""!!""!"!~!!~'~!!!"i+++X&+~"~!"""!!!!"""""">>>>>>>>>>>>"">>"i & $]"i">>>>>>>>>>>> > ii++ +//+/+XEF+:........................................................................................................
//.......................................................................................................................................................`II:;; , ; :, , , ``:::::::::`,; ';', ';+$#E>`,;:;;,,````````````````````;:`YN}.````````````````````::::::::::`,;,;'">>+>]$Y}]]]]]]]}}111/////+++//////11}]]llll*****IIIIYYYI**ll]]]}}}}}}]]]}}RKi~!"!!!!!!!!!!!!!!!!!"""!!!!!!""!!!!""""!!"!> ">YR!"i!"~"""""!""""">>>>>>>>>>>>>>" > !">YE&>>>>>>>>>>>>>>>>i>i+++///+>*REX`........................................................................................................
//.......................................................................................................................................................!#"`,,;`,,,,``:::::::`,;;'~~~;;"'~&%I~,'~;; , , ```````````````````````; & W + :, , ````````````````````:::::::`,, , ; '!">i>]$I1]]]]]]}}}1++//+++///+++////1}}]llll*****IIIIYYYI**l]]]]]]]]]]]]l]}KRi~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!~""/K*""~!>!!>""""!!""""">>>>>>>>>>>>>>"!>IWX">>>>>>>>>>>>>>>>>>i+/////i/+YEF'........................................................................................................
//......................................................................................................................................................:]R~`;; `;`,, , ``::::::`,''''''~'''', "#R';,;;;,,``````````````````````:`}W]`,,,,``````````````````:::::::`,;,''!" > i"*$I1}}}]}}}11/++/+++++++++++///11}]llll******IIIIII**l]]]]]]]]]]]l]l]1&#i~!!~~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!">KF~"!!"!!>!"""""""""""""">>>>>>>>>>>!~*%K>i>>>>>>>>>>>>>>>>>ii+////+/++I&E"........................................................................................................
//......................................................................................................................................................'#I:;', , , , , , , , ::::::`;; '~~'''''~~~'~'F#~'>!,`;,:```````````````````:;`;*E~`,`;:,,`````````````````::````,;;;'!!> i > l$I1}11}}11 / ++++++++iiiii++///111}]llll*******III**ll]]]]]]]]]]]]]lll}F$/'!~'~~'~~!!!!!!!!!!!!!!!!!!!!!!!!!!!"!~~>;YE1~>!!"""""""""""""""""""""">>">>>>>>"/$KF"iiiii>>>>>>>>>>iiiii+////+/+++YRY:.......................................................................................................
//....................................................................................................................................................., 1R + , , ; , , , , , , , , ::::::`;'~~''''''~~~~;~i$K>F}`;':, `:`````````````````,:``"#1`,```,``````````````````````,, ; ';;'!!>> > *$ * 1}}}}11 / +iiii++ + iiiiii++///111}]lll*******IIII**ll]]]]]]]]]]]]llll}F$i;~'''''~~~!!!!!!!!!!!!!!!!!!!!!!!!!!~!!>~}Rl'i~!!""!!!""""""""""">>"""""">>>>>>i>IK]Eiiiiiiii>>>>>>>>>iiii+//////+/+lFK`.......................................................................................................
//.....................................................................................................................................................:1], ; , , , , , , , , , , ::::`,; '~~~~~~~~~~'~~~, ~YKRF, ';;,``,`````````````````:,`.`}$"`,,,``,````````,````````,,,,,;'''~!!>> "I$l/11//1/+iiiiiiiiiiiii++////111}]lll***********ll]]]}}}}]]]]]l]llll}F$1'~''''''~~!!!!!!!!!!!!!!!!!""""""""!!!"~Y$1'~!!!""""""""""""!!"!""""">>"">>>>ii>]K1/RX>iiiiii>>>>>>>>iiii++/111+1/+i}I#+`......................................................................................................
//....................................................................................................................................................:; * > ;; , ; `'`,, , , , .:::`,'~~~~~~~~~~~~~''!;/&#W1,,;,,`````````````````````,`:>#I``,,,,``````,``,,``````,,,,,,;'''~!!>> "Y$l/}1/1/++iiiiiiiiiiiii+++///111}]]lll*********ll]]}}}}}}]]}]]l]lll*}F$}~'''''''~~!!""""""""""""""""""" >> > ">>"!1$1~!!!!!!""""""""""""""">>>>" >> ">>"">i+"F * +iX#1++++ii >> iiii >> iiii++ / 11111 / 1 + i}RI'......................................................................................................
//...................................................................................................................................................:, ]X, ;;; , , , , , , ;; , :. : `,; '~'~~~~~~~~~~~'''' > ###E + , ;; `:````````````````````,:``iW1., , ``:``,, ```````````,, , , , , ;; '''~~~~""X$}/11////+iiiiiiiiiiiii++////111}]]]llll***II*ll]]}}111}}]]]]]lll**]lKRI~,;;;;;'~!""""""">>"">>>>>>>>>>>>>!>!!&#i!!!""!"""""""">>>>>>>>" >> > "">>>>>>"" > i + i1ii}RFii++ii++iiiii >> iii++ / 1111]} / ++ / Y# > :.....................................................................................................
//....................................................................................................................................................'X}`;;;;,,,,,;;,:::``;~!!~''~~~~~~~~'~'' + $E * ~''',:```````````````````:`,:`,'K&, ;; `,:`,, , , , , , , , , , ``,, , , , , , ; '''''~~!""X$}/11////+iiiiiiiiiiiii++///1111}]]]llll***II*ll]]}}111}}]]]]]lll**]lRYI>`,;,,,'~!""""""">>>>>>>>>>>>>>" >> i""I$}"" > ">"">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i++++/+1KR/+++++++++iiiii+ii++/1111]}1+/+]E+:.....................................................................................................
//..................................................................................................................................................., FK, , ;;;;; , , ; , , , `::`,`;~"!'''~~~~~~~~~~';+WE>;',;,`,```,`````````````,,::``,`>%];,.,,`,,,,,,,,,,,,,,,,,;;;;'''''~~!""XW}/11////+iiiiiiiii+++++////1111}]]]ll*****II*l]]}}}111}]]]]]]lll**}]#1/".::`,`'~!!"""""" >> """>>>>>>>>>>"i"iK#>!~i~>""">>>>>>>>>>>>>>>>iii>>>>>>>>ii >> +i + / ++ / l$I}++++++++iiiii + ii++ / 111}1}} / 1 + 1ER, .....................................................................................................
//..................................................................................................................................................:~F~; ';;;;;,,,;,,`::,,:!+>,!'!~~~~~''~~';' * %&!~~''; , ``,, , , ````````````,`````,, `F#~`:``,, , , , , , , , , , , , , , , ;;;;;; ''~~~~'!!iFE]/11//1/+iiiiii++ii++++/////1111}]]lll***III*l]]}}1111}}]]]]llll*l]Y#+,`::::::`'~!!">"">>>>>>>>>>>"">>>i>!FR1!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i+++1++]E&1/++++++++iiiiiii++/111}}}}1/+/KK~.....................................................................................................
//.................................................................................................................................................:`] * `~;;;;;;;;; , , , `::, , , '1K"!'!'!~~~~~~~', "K%*'~'';,,,`,,,,```````````````,,,,``>E*```;,,,,,,,,,,,,,;;;;;;;;;'''''~'~'>K#}111////+iiii+++++i+++////11111}}]]ll*****II*l}}}}1111}}]]]]]lllll}FR+;`:::::::,;''!" > "" >> "">>>>>>"" >> +!> RF""">>>>>>>>>>>>iiiiiiiiiiiiiii>>>>i>>>>>>>i>//111/FE]1++/+i+++iiiiii+++/11}}}}}1//+XR+.....................................................................................................
//.................................................................................................................................................:`l*, ; , ;;;;;;;; , , , `.:, , ;; '&F'~~'!~'~~~~~~; iEW1, ~''; , , , , , , , , ```````````````,, , , , :'FE!.`,,,,,,,,,,,;;;;;;;;;;;;'''''~'''>RK//11/////++iii++++i++////111111}}]]ll*****II*l}}1111111}}]}]]ll]ll}&Ki,`:..:::`,,;;'~~"""""">>>>"" >> > "!"X# / """>>>>>>>>>>>iiiiiiiiiiiiiiii>>>iiiiiiii>>i///+//*EF/1//i+/+++iiiii++//11}}}}}}1/+*R}.....................................................................................................
//..................................................................................................................................................; Y1`;, ;;; , , , , , , , , `::`,;; , l$X~'~~~~~~~~!'~] % & > ; ~~';,,,,,,,,``````````````````,,;`>EI'`,, , , , , , , , , , , , , , ;;;;;;;; ''''''''; > EKii + / 11111//+i+++++++///11111}}}]]llll*********}}11///1]]]]]]]]ll]}}KK>',:.::::`,;;;;;''~!""""">"""!!!""X#/!!"">>>>>i>>>iiiiiiiiiiiiiii+iii+i>>+"""">i!i+111//1E#}1/++///++iiiii++//11}}}}}}1/+1RY`....................................................................................................
//.................................................................................................................................................:'Fi`,;;;;;,,,,,,,`::`,;'!"KE]!~~~~~~~~~~!F%I''~~';,,,,,,,``````````````````,,,`,'&R" : ; , , , , , , , , , , , , , , ;;;;;;;; ''''''; ';>#Ki>>+1}}}}}1++i+++++///111111}}]]lllll*******ll}}11//1}]]]]]]]]ll]}}KK>;,::::::``;;;;;;;''~!"""">!>!!"!*$]~!""">>>>>>iiiiiiiiiiiiiiiiii>/+>>iii!]FEF*>>i+/////1KE*1/++///++iiiii++//11}}}}}}1/++&F~....................................................................................................
//.................................................................................................................................................:~F~, , ;;;; , , , , , ;; , `::`;';,;+##l~~~~~~~~''>W#1;~'~~';,,`,,````````````````````,,`;,"#Y'`,, , , , , , , , ;;;;;;;;;;;;; ''; ''';'; > #&>>>>i + ]]]]} / ii++++ +//1/1111}]]lllllll*llllllll}111//1}}}]]]]]]l]}}}K&!;,`:::::``,;;,;;;;'';'~""!!"~"~lEl!"""">>>>>>ii+iiiiiiii++++++++iii+i>l#FlRF&#K>/++/1111I$X11+////++iiiii+++/1}}}}}}}}11+Y#+....................................................................................................
//.................................................................................................................................................:!R;;;;;;;;; , , , ;; , `::`;, , ~'' * R$1`!'!''''~INX";~'~~',,``````````````````````,,``;`:'I % ",,,,,,,,,,;;;;;;;;;;;;;;;'''';';>K#+!ii>>/l*]1/+i++++++/1/11}}]]lllllllllllllllll]}1//1}]}}]]]]]]]l}}]$F',,`:::::``,;;;;;;;;;;''~~~!!!;>#R"">"!""">>>>ii+iiiiiiii++++iii+>+//"1#W]}KK]K#I * 1 + 1111 / }##]++ +///++iii+i+++/1}}}}}}}}1+i]R}....................................................................................................
//.................................................................................................................................................:!K, , , ;;;;;;;;;;; , :::`,, ;; ~';*##i~!'",~;>RW*;'''~'';,``````````````````````````,`,,"EK',,,,,,,,,,;;;;;;;;;;;;;;'''';', > K# + !i>>>>1]]}1++++////1111}]]]llllllllllllllll]]]}111}}]]]]]]]]]]]}}}#Y,,,`:::::``,,,,;;;;;';;;;'!!~'~*$1~!"!">!">>>iiiiiiiii+++ii++////>>>/1]R$#KKE&&WI>i+iY/1//REl//+/11//+ii+i+++/1}}}}}}}}1/+}#I....................................................................................................
//.................................................................................................................................................:!K, , , ;;;;;;;;; ';,::`,,;,~'; ''K#K">!;!',+W$},'''''';``````````````````````````````,;*W1,,,,,,,,,,;;;;;;;;;;;;'';;';;',"KE / "ii>>i+/1}1//++/////1}}]]]llllll**lllllllllll]]}11}}}]]]]]]]]]]11}#Y,;,`:::::```,,,;;;;;''';;;~!~'"KK > !!> ~">"">>>iiii>i+i>iii>>+1lX&RRKXl111/>!X%IX#Xi>i/&i/1/FEY//+1/1//+iiiiii+/1}}}}}}}}1//1E*`...................................................................................................
//.................................................................................................................................................."&,`,;'';;;;;;';,::``,;';''~';F#KY*`';;I%K!`;'''';;,``````````````````````````,,;`,~&W>`;`;```,,;;;;;;;;;;;;''''';~';!K$1!i>>>++++/11/++//+/1}}]lllll*****ll******llll*l]11}]]]]]]]]]]]}}}]RX',,`:::::```,,,;;;;;;'';,;''~'l$]~"~"!" > !> !"i+i>>}}}1///////++i++++++++++/>Y#&#EFii"Il + 1//]$Rli1/1///+ii+ii++/111}}}]}}11+}FX;...................................................................................................
//.................................................................................................................................................."K,,,''''';;;;';`::``,,''';~'';R#X&~';'Y%Y'';~'''';,`````````````````````````,,,;;;,/N*;;;,```,;;;;;;;;;;;;;'''''''',!K$1!i>>>iiiii++iiiii>i+//1]lllll*************lll*l]}}}]]]]]]]]]]]}}}]RX',,`:::::```,,,;;;;;''';;,,''~XEi!"!"!" > !}i"iiii+++++++//++///+++++++++++iiIEEEEFii>F}+i1/]E$Y+/11///+ii+ii++/111}}}}}}1111I#i...................................................................................................
//.................................................................................................................................................:!K!, ;; ''''';;;;,::::`,,;;'; ''~~`1EFR>, > EWl`',''''';,``:::````````````````````,,;,,;', 1 % *, , , , `,, ;;;;;;;;;;;;;; ';~;'; ',!K$1!i>>>iiii>>>""""""">>>ii+/}]****************lII*]}]]l]]]]]]]]]}}}]#X', , , :..:: : ```,, ;;;;;; '';; , `;; +$I'~!!!!!>!IYi>>+i+++++++++++///++++++++++++i]#KKE]"1+&ii1++/FWF/111///++i+++++//11}}}}}}11/1*E]...................................................................................................
//..................................................................................................................................................~X > , ~; ''''';;,;`::::`,;;;~'~'~;~;I$E*' / % R1`;; ''''';,`:::`````````````````````,`,,,,,;!K$i', , , , , , ;;;;;;;;;;;;; ';~;', ',!K$1!i>>>iiii>"""""""""""">>>i+}]****************IIIl]]lll]]]]]]]]}}}]#F', , , :..:::: : ```,, ;;;; '';; ``,'}W1'~!!!"!>!l&+"i / > i++++++ + i++++++++++++++++++"IE#K/+>}Fi1i1+/X%&1//11//++i+++++//111}}}}}11}+l$l...................................................................................................
//.................................................................................................................................................:; F}, ''''''';;;,`:.::`,,;;'''''``'~"#EXY%F';;;;'';;;,`:````::::```````````````,,`,,,,;;;#E>``,,,,;;;;;;;,,,;;;;;';';,`!#E+"i > i"ii>>"""""""!!!""!"""" > ii / }*************I* YYI]]llll]]]]]]]}}}}R & '`,,:::.::::::``,;;;'';;,`,`;YE>'~!~"~!" > +R} >> ii++++++++++ +//++++++++++++++i1]ii+/+I]++++//]ER]1/111//++++++++111111}}}}11/*$i...................................................................................................
//................................................................................................................................................``II;`,!''''';;,``:.::`,,;;'; ''''~;; '~K$#%Y,'; , , '';;; , `::``::::````````````````,, `,, , , , ';/WX;,:,,,;;;;;;;;,,;;;;;'; ';,,>ERi"i>i>ii>>"">>"""!!!!!!"">>>>>>+]II*****IIIIIIIXXXll]lll]]]]]]]}}}}R&'`,, :::.:::::: : ``,, ;;;;; , , , `,FR!''!~!~!"" > K1">+i+++++++++++//++++++++++++i1+++i+i+1I}++/++1]##*//111//++++++++111111}}}}1/+YE!...................................................................................................
//..............................................................................................................................................`,lR + ; !, ; ''''''; , , ::::::`,;; ''''''';';; ~; 1 % # / ';;,,'';;,,`:::::::::```````````````,,,,``,;,'; i % F;;; , , ;;;;;;;; , , ;;;;;;; ';,;/$F""i>>>>>>"""""""!!!!!!!!!!""">">+]*I**IIIIIIIIIYYF*Il*ll]]]]]}]}}]]#K'`,, :::.:::::: : ``;;; ''';;;::;K#";;~'!~!"""X1i>i++++++++//++//+++++++++++++/i+1lXY1+/+/i+/+/}K$X+/111//++++++++111111}}}}1+1RK,...................................................................................................
//.............................................................................................................................................., I# / , ~''''~''~;;; , :::::`,, ;; ''''''';''', ~I % K"'';','';;,``:::::::::::``````````:``,,,,,,,,,~;,]WI',;;,,,,,;;;,,,;;;;;;';`,*Nl!i>>>>>>>>>"""""!!!!!!!!!!!!!!> !"/lII*****IIIYYXY&X*lllll]]}]]]}}}}RK!```:::::::::::`,;;''''';;`:'#F',''~~~!!"!]} > i + i++++++++++ / 1++ / +i++//1111lIXY]+i+++++++++++1&$&+1/11//+++++++//11111}}}11/}EX,...................................................................................................
//............................................................................................................................................:, * #!, ; , ';~'~'~~;;;,:::::`,;;'''''''; '~'',>$%I'; ''',;;;;,`:::::::::::::`````````````,,,,,`,,,;', +$K';;;,,,;;;;;;;;;;;;;'; `~ & $ / "i>>>>>>>>"""""""!!~!!!!!!!!!!""">1*II**IIIYYYXXFK&I*lllll]]]]]}}]}#R!```::::::::::`,,;'''''';;`:'#X;,;'~~~~!!"">>>i++//11}}}]]}}*I*lIYXXY*]/ii/1/+//+//++++++++/IEK1/111//++++++//1111111}]}/+XEI:...................................................................................................
//............................................................................................................................................:iKi`~'~'''''; '', , , `:::::`,';''''''~'; ~'''1WW];;'';;;;;,,`:::::::::::::``````````````,,,,`,,,;`;,}$Y;;;;;;;;;;;;;;;;;;;'; , > $K + >> i > ">>>>>"""""""!!~~!!!!!!!!!!""!i] * I** IIYYYYYFF& #Ylllllll]]]]]]]}#R!```::::::::::`,;; '''''';; `:~#X; , ;; '''~!!">>>iii+i+++++ii/]****]1++++////++///++/++++++++++1*$#]/1111/++++++/1111111}}}}1/R#]....................................................................................................
//...........................................................................................................................................`!$ / ; '''''''''';; , , ``::::`,; ''''''''''''''~Y % K > ; ~';'; ';;,,:::::::::::::::::`````````````,,,,,`,'~, `]WY';:;;,,;;;;;;;;;;'; '`/%F+iii>">>>>>"""""""!!!!!!!!!!!!!!!""">*YIIYXYYYYXFFF#F*ll**ll]]]]]]]]RR!,,:::.::::::::`,'''''';;;::~EX`,;;'''~!!"" >> > ii++++++++ +///////////////////////////+++++/+i*E#l/1111/++++++//11111}}}}11}#&"....................................................................................................
//..........................................................................................................................................``XI;''''''''''';;,,``::.:,;;;'''''''';''~'"K%F"'~''';;; , , `:::::::::::::::::`````````````,, , , , , ; , ''; ~FWi';,;;`;;;;;;;;;;';; `}NI > iii>>>> > """""""""""!!~!!!!!!!!!!""""}XYXYYYXXYXFF&R&Il***lll]]]]]]lR#", , :::.:::::: : `,; ''''''';', :!EI : `;; '''~!"!""">>ii++++++++++++++++++++++++/////////////++++/+lEE*+1111/++++++/111111}}}}11lEX'....................................................................................................
//.........................................................................................................................................:, FK : ;; ''';;;;;;;;;,,``::``,;'''''''''''~'~;+WEl,'; '';;;; , , `:::::::::::::::::`````````````,, , , , , ; , ; ''~; K$ + , , ; , `;;;;;;;;; ';'; , *% l"iii>>" >> """""""""""!!!~~!!!!!!~!""!>>]XYYXYYYXYF&RKRFIII****lll]lll##>``:::.:::::::`;'''''''''',."$ * `,;; '''~!!!"""">>>++++++++++++++++++++++++//////////////////+l##*i1111/+++++//111111}}}}11X$Fi....................................................................................................
//........................................................................................................................................:`~]':'~;;;;;;;;;;;; , ```:``,; ~~''~'~~~~~'~';~l%E/'!''''';;,,`::::::::::::::::``````````````,,,,,,,,;;''' + #K > , `,; , , ;;;; '';; '', 'FW}ii+ii>>""""!!"""""""!!!~~!!!!!!!""">>>iYFXFXYYFF&KKR#&YYIII***l*l***R#>`::::::::::::`,''''''''''`:i$l`;;;''~~!!!!"""">>+++++++++++++++++++++++//////////////////++}E#]+11///+++++//111111}}}}11RE#*`...................................................................................................
//........................................................................................................................................`1Y!`;, , ;;;;;;;;;;;; , `:``,; '''~~~~~~~~~~'';'"&%K!'~';''';,,``::::::::::::::::``````````````,,,,,,,,;;;;''i$&;:,;,,;;;;'',;'','FW}ii+++i>>>"""""""""""!!~!!!!~~!!!""">>>i}YYXIIX&&KRRRRRKFYYYYYYIYIIII##"`::::::::::::`;''''''''',,:iE],;'''~~~!!!!!!!"""+iiii++++++++++++++++++//////////////////+i1EEl+1//++++++/11111111}}}}}]REEY,...................................................................................................
//.......................................................................................................................................:!#I'`;,`;;;;;;;;;;;;,```,;''''~~~~~~~~~~'~'~>W$*'~~~'''~;,```::::::::::::::::``````````````,,,,,,,,,;;;;', lNi, , `,;;;;;; ',;'',~&$}ii+++ii>>>""""""">>""!!!!!!!!!""">>>>ii>//1//1]]l*IX&KR&XXXYYYIXIIYYE#"`::::::::::.:,'''''''''';,:+$1`;;''~~~!!!!!!!!!!iiiiii+++++++++++++++++//////////////////+i1EEli///+++++//11111111}}}}]]RE$Y,...................................................................................................
//......................................................................................................................................:; FX, '', , , ;;;;;;;;;;;; , `,;; '''~~~~~~~~~~~~~~'`lW&'~~'~''';;```:::::::::::::::```````````````````,,,,,,,;;;~,'FW",`;;;;;''',;;',~KW1+++++ii>>>""">>>> > """"!!!!!!!">>>ii>>iiiii++///1111}]]]YXF&FXXXXXYXFEK~:::..:::::::`;'''''''''''`:1$+`;;'''~~~!~!!!!!!!"">ii++i++++++++++++++++//////////////////i+#$*>///++++++/11111111}}}}]]KEEl,...................................................................................................
//......................................................................................................................................:iW";',';,;;;;;;,,;;;;,,,;;''~~~~~~!~~~~~~~;'" & WR / ~~''''';;```:::::::::::::::`````````````:`````,,,,,,,,;;'; , 1$l, `;;;;; ''',;;'`~R$i > ++ + / ++i >> """"">"""""""!!!!!!"" > ii >> > iiiiii++++/////111}]*X&&&&&&FF&$R!::::::::::::`;'''''''''';,`]E>`;;'''~~~~!!!!!!!!!!">iiii++++++++++++++++/////////////////+i}EEl+///++++++/11111111}}}}]]#EE],...................................................................................................
//....................................................................................................................................::iW > ;; , ; , , , ;;;;;; , , , ;; , , ; '''~~~!!!!!!!!~!!"!~~+$$R'~~~''';;;```:::.:::::::::::`:::::::`````````````,,,,,,;;'',~KR', ;;; ''''';;''`>ER">//+/+/+i>""""""""""""""""""">>ii>>>iiiiiiiiiiii+++++//i/11]XKKKK&KK$R"::::::::::::`;'''''''''',,.I#!`'; '''''~~~~~~~~~!!!"">ii+++++++++++++++++/////////////////+>1EEli//++++////111/11111}}}]]EEE},...................................................................................................
//....................................................................................................................................:`&Y!`;, , ',;;;;;;;;;;;;,;''~~~~~~!!!!!!!!!">"!' + W$E!~~~''';;;```:::.:::::::::::``::`````````:``````,,,,,,,;;;', , IE + , ; ''''''';;''`iEF">11//+/+i>""""""""""""""""""">iii>>iii>>iiiiiiii++++++/+++++}YRRKKRRW#>::::::::::::`;''''''''''`,:YR~`'; ''''''~~'''~~~!~!!">iii++++i+++//++++++////////////////1+ilW#]///+++/////11/////11}}}]]#EE},...................................................................................................
//...................................................................................................................................., & K; , , , , , , , , ;;;;;;;;;; , ;; '~~!!!!!!!!!!!!"">>>!!+E$R"!!~~'';;,,``::::::::::::::::::::````````:```````,,,,,,;;,;;;i%],;;'''''';;;'`/$Fi + 11////++>>>>""">>>""""">>>>>>iii>>>>iiiiiiiiiiiiiiiiii++++/+}I#RKRR#E!::::::::::::,;'''''''';;,`;&X:,`;;'''''''~~'''~~~~~">>i+ii++++++++++////////+///////////1/IEKF+/////////////+++//1}}}]l*EE#/,...................................................................................................
//.................................................................................................................................... + $ / , , , , , , , , , ;; , , ;; , , , , , ;; '~~!!!!!!!!!!!!">iii""iE$R"!!~~'''; , , ``::::::::::::::::::::````````:``````````,, , ;; , '`~~W*';; ''''''; ''',1W&+/11/////+i>>>""">>""""">>>i>>>>ii>>>>iiiiiiiiiiiiiiiiiiii++//1]&RR#K#W"::::::::::::,;''''''';;; ``"El., , ;;;; ''''''~~'~~~~~~">>iiii+++++++++/////////+////////////}K#*X+1////////+//++++//1}}}]l*ERl~:...................................................................................................
//...................................................................................................................................'K}'; , , , , , , , , , , , , , , , , ;; ''~!!!!!!!!!!!!!!!">i>>>"i#E#i""!~''';,,``:::::::::::::::::::::::::::::```````````,,;;'~`;, W & !''''''''; ''~, 1WF + / 11/////+i>>>"">>"""">>iiii>>iiiiiiiiiiiiiiiiiiiiiiiiiii++i+++/}KRRKRN1::::::::::::,;''''''';;,.;IE':,`;;';;;;'''~~~''~~''!">>ii+++++++++//////////+////////////&W*i/++/////++++//++i+//1}]]]l*E#/`....................................................................................................
//..................................................................................................................................`YF!; ',,,,,,,,,,,,,,,,;;;~~!!'~!!!~!> ~!"!!" > i >> > "!#$$+""!~'';;,,``::.:::::::::::::::::::::::::::::```````,,,;;;;`~'KR~''''';''';';;l$F/1////1/++ii>>>"">>>>>>>iiiiiiiiiiiiiiiiiiiii>>iiiiii+ii+++++++++Y#RKRWl::`:::.:::::`;'''''';;,,.>W*:`:,;;;;;;''''''''''~'~!>>>iii++++++///////////////////////+}##1++++////++++////+i+//}}]]ll*EE~.....................................................................................................
//.................................................................................................................................:}E > ; , ; , , , , , , , , , , , , ; , , ; , '!'!"'"!'>"!>!"!"!!">i>>>">&WE}>>>!~'';,```::.:::::::::::::::::::::::::::::::::``````,,;,`''E&'''''''''';'; ~YWI + 1 / 1//1//++i>>>>>>>>>i>iiiiiiiiiiiiiiiiiiiiii>>iiiiiiiii++++++++i/YRKK$F;:::::::::::`;'''''';;,,'RF,:`,,;;;;;;;;;';'''''''~!">>iiii+++++////////////////////+++/K$*i/////////+/////++i+1/}}]]llIEF'.....................................................................................................
//.................................................................................................................................~R*, ; , , , , , , , , , , , , , , ;;;; ''~"!;*$$]""!!"!!"!!" > i >> > ">FW#l>i>"~~';,```::.:::::::::::::::::::::::::::::::::```,````,,`'!WI'''''''''';;; !XW * +1111 / 1//++ii>>>>>>iiiiiiiiiiiiiiiiiiiiiiiiii>>iiiiiiiii+++++++++i]&K&K#!::`::::::::`;'''''';;,,1$1`:``,;;;;;;;;;;;'''''''~!">>iiii+++++//////////////////+///1]E#}11+///////+++++++ii+1/}}]]llIEY'.....................................................................................................
//...............................................................................................................................:`YK'``,`,, , , , , , , , ;;;;; '''~'''1#}; "XW1~~""!" >> iiiii >> YWEY >> i > "!~';,```:::::::::::::::::::::::::::::::::::```````,;;`;]W],'''''''''';;i#E]+11}}11//++iiiiiiiiiiii++++iiiiiiiiiiiiiiiiii>>>>iii++i+++++++++/++*R&R$+``:::::::::`;'';;;;,,:"#X, ```,, , ;;;;;;;;;;;;;;; ''~!">iiiii+++++///////////////////1/1}&$Y}]11+11111//++++++++/11}}}]]lIEY;.....................................................................................................
//................................................................................................................................ > W1:, `,, , , , , , , , , , , , ; ''~~~~~!~]Ki"~'>Y$}""ii>>>i+>>>>]$$K>ii>" > "~;,```::::::::::::::::::::::::::::::::::::`````,;';,,YW>,'''''''~'';;/W#1///}]}}11//+++++iiiii+ii+++iiiiiiiiiiiiiiiiii>>i>ii++++++++++++///i}&KKW},::::::::::`;''';';`;,1W+```,`,,,;;,,;;';;;;;;;''~!" > iiii++++++//////////11////+//1}1*EEI}}}}111111//+++++++/111}}]]}]IEY;.....................................................................................................
//...............................................................................................................................'Kl:``.:```````,,;''~~~~~'!~!'1l"!i"]"YWR/i>>>i+i+i>ii$E#+ii>>""""~,``:::::::::::::::::::::::::::::::::::::`,;;'''; , ~#F~'~~~~~~~~';; ~YNYi / 11}*YI}}111/////++ii+++++iiiiii++iiiiiiiiii>>iii+++++++++/////1///1l&&$X;::::::::::`,,,,]!'``'KX`,```,`,,,,,,,;;;;;;;;;''~!">i+ii+++++//////////1111111/1}}}]KEF]]}}1}}}}}11/+++++++/11}}]]]}]IEX;.....................................................................................................
//..............................................................................................................................:+#!`.:::..::```,; ''~~~~~~~~~~~!!!">ii+/#RR+>i>i>++i/>+&WE*~+"">>""!;```:.:::::::::::::::::::::::::::::::::`,;';;;;~,iE*,'~~~~~~~~~;,"K % *i + 1 / 1 * XXX}1/////11/ii++++iiiiiiiiiiiiiiiiiiiii>>i++++++++////////1//11YK$#,:.::`.::::``,;'#+;`.>N/,```,`,,,,,,,,;;;;;;;;;''~!">i++i+++++///////////1111111}]1l*##**]}}}}}}}}11/+++++++/11}}]]}}}IEI;.....................................................................................................
//..............................................................................................................................'$1::.:.::.::``,;'~~~~~~~~~~!~~!!!!">i++"IER}ii > ii++ > iilW$& > iii > ">""!~;,`:::::::::::::::::::::::::::::::::,;'''''~'~,}$!'~'''''~~~~','Y%li+//}IXXFFXIl}111}}}/ii++++++iiiiiiiiiiiiiiiiiii+++++++//+//////111/1/lXE$!::::::::::::`,;#}```*E~````,`,,,,,,,,,,;;;;;;;;'~!" > i + ii++++ +//////////1111111}]]l]K$&ll]}}}}}}}}}1/+++++++/11}}]]}}}I$I;.....................................................................................................
//..............................................................................................................................1$'.::.::::::``,;'''~~~~~~!!!!~!!!!i > +> ++ > Y$Y + i > +ii / ii > ]$$Ki > i > i >> i >> !~',``::::::::::::::::::::::::::::`,'''''''''~~; 1$'~'~~~~~~~~~',;*%]>//1lXFYXFFFFFY*lll]}1/+++++++iiiiiiiiiiiiiiiii++++++////+//1111111///]*RW>.:::::::::::``:R]::,RF,`::`````,,,,,,,,,,,,;;'; '~!">i+ii+++++//////////11111}}]]]]lE#Yll]]]]}}}}]}}1++++++//11}}]]}}}IEY;.....................................................................................................
//.............................................................................................................................'K]::::..:::::``,;''''~~~~~!!!!~!!!">iiiiii/1EX/ii>+/ii>+F$$l"iii>>iiii"!', , `:::.::::::::::::..::.::````,;; , , , , ;; ''~~; !#i~'''~~~~~~'~'' + #li / }lYYYYXXFF&&&&& FYYXY*}////+ii++///++iiiii+++++/////++////111111}1}1}]1X@}:.`:.::::::::::KY`:~E]::::``````````,,,,,,,,;';'~!>iii++++++++++/////1111}}}]]]]]]K#X}]]]]]]]]]]]}}1/++i+///1}]]]]}]}*EY;.....................................................................................................
//............................................................................................................................:iR~:::::::::: : ``,; '''~~~~~~~!!~~!!!">iiiiiiiiY$F>/>>+//iiY$$I>iii>>>iii>"!~', ``:.::::::::::.:::`,, ; '''''''''''~!""!>'!'XY'; ~~''';;;,;;,>&li}]*IYIII*IIYYYYYYF&&&&Yl}////++/++++++++++++/////////+////11111111111}/INl:.`::::::::::::XF,:i#~:::::````````````,,,,,;'; '~!>iii+++++++++++////111}}]]ll]]]]R#I]]]]]]]]]]]]}}1+++++/1/1}]]]]}]}*#Y;.....................................................................................................
//.........................................................................................................................:. : }E > :::::::::::::``,;;; '~~~~~~~~~~!!"">i>>iiii++]WR]iii++ii}R$K+ii>i>iiiii>>>!';; `::::::::::::`,; '''~,,,,,;~!i+/1}]*Y*F&K#NWW%%%%WWWWWWW$$WE$$WW$$$WW$$ERK&&&XFKRR&&KF*/i+///111///////11//////////////11}}}}}}}]}]}}%Y::::::::::::::.l#,:}F::::::::::::````````,,;;'; '~!>iii++++++++++++/1111}]]llll]l]Y#Yl]lllll]]]]]}}1/+i++/11/1}]]}]}]}*RY;.....................................................................................................
//........................................................................................................................:.`#I!:::::::::::::::`,, , ; ''~~~'~~~~~!!">>i>>>>>ii>/RER/ii+++i/K$R/++>+>iiiiiii>i"!~,:::::::::::`'">"!i] * X#WN%%% WWWWW$$E$RFK& KFXF&&& KKRR& RRFKERF&&& FXXXYXYYYIIYYX&&& RE$E$% WRI]11111111111111////111///////1}}}}}]]}l}]]}%F`::::::.:::.:::]#,`lI:::::::::::::::::::``,;;;;'~">ii++++++++///+//1}}}]]lllll]*}&#]*]lllll]]]]]}}1/+i++////1]}]}]}]}*RY;.....................................................................................................
//......................................................................................................................:.'WY:`.`::::::::::::::::`,,,;''~~~~~~'~!">>>i>>>>>>ii/EF$Y>+/>i+XEEYiii+>iiiiiiii>>""!',``:::::'KXR$$RI*]X&R##E$$#RRRRRRREEEE##############EE#RK&XFFFFXXXYXXXYYXXIYXXXYYYIl1I&$$#ERY]}ll}1}}111}1111///////1}}}}}}]]]]]}1E#~`:.:::::::::::+%!,F~::::::::::::::::::``,,;;'''~" > i++++++++++++++//1}}]]lllll*lIEY]]lllll]]]]]]]}1/+i+++//1}]]]]]]}}lEY;.....................................................................................................
//.......................................................................................................................'&/,,.`.:::::::::::::::::``,,;;'~'~!!"">>>>ii>>>i"i>+iI#YR*///ii]K$&/i>+ii++iiiii>>""!~'',`::,`,&K#*/l}}+/1}}}}]]}]*IYXFF&&&&FFFF&&&&&F&&&&FFFFFFFFFXXXXXIIIIII**IYII*l*I&#$E#KEE$$EK&FF&Xl}}]}1}}111/////11}}}}}]]]]]]}1#$!::::.:::::::::!%>;&:`::::::::.::::::::``,,;;''~!"i+++++++++++++++/1}]]]]lllll*l&#*}llllll]]]]]]]}1/+ii+///1}]]]]]]]]IEY;.....................................................................................................
//......................................................................................................................., lR / :.`.`::::::::::::::::. : ``,, ;; !!"""" >> iiiii > ii >> i >> > lE * K& > i / +}FEK1i"ii+++iiii>>i+i>!~~',.:," + 1R$li!''; ~!">>/]*XF&&KKR#EEEEEEEEEEEEEEEEEEEEEEEEEEEE####EE####RRRRK&FF&RK&*FIYX#E#RKKKKKRY]]l]]]}}111111}}}}}}}]]]]]]]]1&%+`..::::::::::`'$]"l:`:::::::::::::::::``,, ;;;; '!"ii++++++++++++++/1]lllllllll}*E&]lllllll]]}}]]]}1+iii+/++/}]]]]]]]]I$#'.....................................................................................................
//.........................................................................................................................; *#":.:`::::..,``:.:~1*FX*+'::,;~>i>!!!>>>i+++iii>i+++FFR$I+/i/IRR}>"i > ++ + iiiii >> }EKlIXR$ % N$&*}]M$F"!>i111111}}}l*IIIIYIYYYIIYYYYXXXFFFFFXXXXXX&FF&&FF&KKRRRR##EEEEEEEEK&&YlIKWR&&R#RRR#&Il}1]}}}}11111}}}}}}]]]]]]]]}1Y%}`:..:::::::..:'WY!+::::::::::::::::::``,,;;;;;~" >> i++++++++++++++ / }]llllllllllXEYl] * ***l]]}}]]]]}1 / iii++++ / }}}]]}}]]l#$ / .....................................................................................................
//.........................................................................................................................; KX, :.; ``::!lFRY1!; `::.... : , !/ lKEWW# & I] / ++ii >> ">+++!>++]YF$*/+/FW$*iii>iiiii>>>1~X#R#>;.:,';`::!XY$".`:```::``,, , ;; ''!!!">i+/111}}]]lllll***IIYYIIIII**IIIIIIII***IIIIIIIlIF#$R##RKKRRRE$K*}]}}}}}}11}}}}]]]]]]]]]]]]]1*$X;.:.::::::::::,K#':::::::::::::::::::,,;;;;;''~" >> ii++++++++ + / ++ / }lllllllllll * EE&]]]l * *l]]}}]}}}}1 + iii++++ / }}}]]}]]}]##~.....................................................................................................
//......................................................................................................................... + #".:,:"XWK + , :`..:`..`,`:::::::.:, ; "}FEW&]+>>"!i">]FE#E&*/&#}" / X$$Yi > "iiiii>>>>1l$X,`:,``,;'';`>Kl%+:.:`````````,,;;'~~!" > ii +//1}}]]]llllll***IIIIIIIYYYYYYIIIIIIIIIYYY**]Y&K#FYX&KKRR##EEX}]}}]]}}}}}}}]]]]]]]]]]]]l]}]ER'.:.:::::::::.;KE'::::::::::::::..:::`,;;;;'''!>>iii+++++++++++/1]llllll]]]]]KEK]}]ll*ll]}}}}}}}}1+i+i++++/1}}]]}]}}]#X;.....................................................................................................
//.......................................................................................................................:lR~::`,iRKi, .`:`:::::::::`,.::'/#$$ERFY**11IRENE##F/"!>!+XEY]%/i}EWK1!>>i>+>>>>"!lWF;::,`''~!!!!iKF$*,;,;;,,,,,,,,;'''~~!!"" > i +///111}]l]]llll*I********IIIIIIIIYYYYYYYXYII&#$KXF&&KKRR##RERI]}]]]}}}}}}]]]]]]]]]]]]]]]]]K$>...::::::::::,FW,:::::::::::::::.:``,;;;;;''~!">ii+++++++++++/}]llll]ll*ll]I#El**l]}**l]}}}}}11}1/+ii+>++++11}}}}]}}#l,.....................................................................................................
//......................................................................................................................."#i.,.:::,`.;:.,`::::::::.::,.'#NY':,::,``>}FKYI1XYl+!~~!"!1EEY$] + Y$EI!">i" + i"" > "~I@1.:`:`~!!!~!~iFX#&`~;''';;;,,,;''~~~~!!""">>>>ii++ + / 1 / 11111}]llll******* IIIIIYYYYYYYXYYYREE& XF&& KKKRRRE#RKll]}]]}}]]]]]]]]]]]lllll]]]}FW / ::.::::::::::, Y % ':::::::::::::::::`,;;';; ''~~!">ii++++++++++/}]ll]]l]l*]]l}&EF}*]*ll]ll]}]]}1}}]1/++i+++i/+/}}]1}}}]$I,.....................................................................................................
//.....................................................................................................................:iW + ``: : ..`,.`;., :::::::```.!@}:`.`:```.. > & E / ''; "~`';;!~"""!"~~IE$#K$WE}'~!>>" > "~,"K##i:.`,~> "" >> i > +I & K#'''~~~~'';;;'~~~~!!!!""">>>>iiiiiiiiiiii+//1}]lll**IIIYYYYYYYXXXXXXFYXEERFFF&&&KKKRR###RK*]]]]]]]]l]lllllllllllllll}YW*:::::::::::::,*%"::`:::::::::::::`,;;; ';;'~!~!> ii++/////////}]]l]]llll]l]]I#&KF*l]]l]ll]}}}]X&#$#Fl1++>}FRI/1/11}}/}W*,.....................................................................................................
//....................................................................................................................:'KY:::::::::::::::::.:`.::l#/``.:::`;.' & $1',~'~!; , ''',}X#FIWR*~>lIX%#$E+;'~"!" > ~; / N]; :, ````"ii&E$WW$$RKE > '!~~~~~'';''~~~~!!!"">>>>>iiiiiiiiiiiii+1]}]l**IIIIIIIIYYYYYYXXXXXYX&##RXFF&&&KKKRRRRR#RXll]]]]]lllllllllllllllllll*W&,.:::::::::::`]%/.:::::::::::..:`,;;;;'''''~~!> ++ + / 111111111}]ll]l]]]l]l}]FREK*]l}l]l]}}*KERIl]} / +//i]KE*>/i/1/1/111$],.....................................................................................................
//...................................................................................................................., && `::::::::::::::::; ::; }Wi:; `;::., / R#EY",'>'';!>1FKERRK*}!il&FR$RIIF$#I~,,`"i / ++EY`:``.:, ``;!">>" > ""iFRE*, "!!!!~~~''~~~~!!!">>>>>> > iiiiiiiiiiii + 1]l** IYYYYYYYYYYYXXXXXXXXXXXXK#ERXFF&&& KKKKKKKKKK& F* l**]]ll**************** l* #E!::::::::::::`] % 1.::::::::::::::`,;;;;;; '~~!!>i+/11111111111}]ll]]l]]]l]]*XEF]l*1}]I&ERYl}}]l}l1i/lEX1i1ii1i//i+++//E*";:...................................................................................................
//....................................................................................................................lW > :::::::::::::::::.`}RI, ; ``;., `:`}El + !;; '~;"iK@#EERX1:,:']RYE#EEEREK%% EE##W% RK% I, :::`: : . : !, ~"]i>!+ii*#EX;!!!!!!~~~~~!!!!!"">>>>>>>>>iiiiiiii+/}l**IIYYYYYYYYYYYXXXXXXXXXXXYXR##&X&&&&KKKKKKRRRRRRR&YII*************II*IIIIIYKW>.:.::::::::.`]%1.::::::::::::``,;;;,;;''~~!"i1}111}}}}}}}}}]]l]]]l]]l]]]IR#I}l}lIR#RRKF*//l]1]I&F1i/}ii/>i/"i+ii"/}#&/~`...................................................................................................
//...................................................................................................................!E}:`:::::::::`.:. : `!I#R!',,;.,`,i$X!;'~~!!> YWE#EY!, ;;;;;;;;;;; , ;;;;;; '';; '', ~; l$K~:::::`: : `,''; ~ii > ii"iF$R"~!!!!!!~~!!!!!!!!"">>>>>>>>i >> > ii / 1}]l* IIIYYYYYYXYYYYYYYXXXXXXXXYYXEEEX& F&& KKKKKKKKKKKKKK##KXI* IIIIIIIIIIIIIIYYYYYXY % 1...::::::::.`l%1.:::::::::::`,, ;;;;;;; '!">i+/11111}111111}}]]]]]]]]}l}l]##*11l&E#X*]ll]}]}}]}1/+ii>i+i+i>+>i>>">i>!>i#Fi'`.................................................................................................
//..................................................................................................................:FK'.:::::::::`.`.,,+&#l;;'; , `.:'K&+;'~'' > !R$$$I';;`;,;;,;;;;;;;;;;;;;;;;;;'; , , , , i$]::::::::`,;; , '>i>i"i>I$R};!!!!!!~~!!!!!!!!"">>>>>>>>>>>i/1}]l**IIYYYYYYYYYYYXXYYYYYYYYYYYYYFEE#X&&&&KKKKKKKKKKKKKKR##&XIIIYYIIIIIIYYYYYXXYX&FW*`:.::::::::.`]%1.::::::::..`,,;;;;;;;'~"i+/+/111111111111}}]]]]]]]]l]]]*E&}1FEKI]]]}11}}/++1++++>" > i +//i"ii+ii>"""~""}E]!`.................................................................................................
//.................................................................................................................. + % i.::::::::::.::~~FE > , ~`'`::`/Wl, ; !; !'!}EFFi;', ; , ;; `;;;;;;;;;;;;;;;;;;;;;;;;; ```; / W]`:::::::`,; , ; > i > iii!]W& Y'!!!!!!!!~~~!!!!""">>>>>i>i+/11}]]ll**IIYYYYYXXXXXXXXYYYYYYYYYYYYY&EEKF&&&&KKKKKKKKKKKKKKKRRRRRK&FFXXYYYYXXFFF&&&KR##R;.::::::::::`]%1:::::::::::`,,,,,;;;'~"iii++/111111111111}}]]]]]]]]}}}]E#FERXXRE#RE&XYYYYYFR#E$EKXl/>i+i>" > iiii > ">>!!i}#F>;:...............................................................................................
//.................................................................................................................:&K`: : `::::::::`'"/EX'";;;,,:~KR+++~'!'iRFi,~~`;,;;;;,;````````::``,,,;;;;;,,,;:;,,:l$+::::::::`,,;>+iiii"}ERF~~!!!!~!!'~~!!!!"""">>>>ii / 11}}]]ll*** IYYYYYYXXXXXXXYYYYXXYYYYYYYY& EEKF&&&&&&& KKKKKKKKKKKKRRKRR##RRK& FFFFFF&& KKRRE##K$!::::::::::::}%}:::::::. : ``,, , ;;;;; '~"iiii+i+//////111111}}]]]]}}}}}1*YE#W##&I]11//1}}1//+ii>"""+lF$%NXii>>i>ii>">">!"1*E]~`...............................................................................................
//................................................................................................................. > %}::::::::`.:1XlWX',', ; , ; `:.`:``'~!']WY;'',', ;;;;;; , ``::::::::::::``,;;;;;; , ;; , ``~, , FN~`:..:. : `';; !Y & $E$RK#EK1~!"!!!~~''~~~!!""" >> > i++ +//11}]]]l**IIIYYYXXXXXXXXXXXXYYYXXXYYYYYREE&X&&&&&KKKKKKKKKKKKKKKKKKKKKRRRRRRRRRR###E####RIE*..:::::::::`1%*::::::::``,;;;';'''!">>>>iiii++ii+/111111}}}111}}}}]1l#E$K1}11/111111//>>"!!!~~~~'';''~!>>">>>>""!!~!~+1}RR+'`.............................................................................................
//.................................................................................................................* % "..:::::,.!XKX#]';'~;';;,:.:`:::;>#K"; ~, , '`,;;;;;,`:::::::::::::::``,,,;;;;;;,`,;`l$Y;::::::,:,;,~l}}YX&KEEKl!"""!~''''~~~!!"!">>>i++++/11}]]ll*IIIYYYXXXXXXXXXXXXXYYYYXYYYYYY#EEFFF&&&&&&KKKKKKKKKKKRKKKKKKKKKKKKKKKKRR#######R*&R,.::::::::.:iWI.:::::::`,,'''';'''"">>>>>>>>ii >> i / 111111}}}}1}1//}i*KEE#I1///++++++iii!!!!~~~~~'''''''''''~~~~'';;';'"1}]&I",:............................................................................................
//................................................................................................................."#>::.:::::/EX%*~'';~'~~!~'.::```;WX,',,;:,;`,';';,`:::::::::::::::.:``,,;;;;;;`;`;+KW"..::.`;'`,;;>>+>>>">XEK*""!!~''''''~~~!!>>>ii+/1i+/1}]l**IIYYYXXXXXXXXXXXXXXXXYYYYYYYYYYXEEEXFFF&&&&&&&KKKKKKKKKKKKKKKKKKKKKKKKKKRR#####EEE&XW>:::::::::::~$X::.::::`,;';;;;; ''~!!"""""!"">>>>i///111111/ii+i+lK$YI*+/i" > iiii>>>>"!"'~~'~~~~~'''~''''''''''';; , , , , , ~ii + }F& i':...........................................................................................
//.................................................................................................................:X#; ``.:':.,}Nl~~~~'~~~~~'~', , , . : '&*;', ;;;;; , ;; ';;,`:::::::::::::::::`,,,,,,;,;', , `lN]`:::``,, ; ';,;"i>>>"">I$RX+>"!~'''''~~~~!"ii+///111}}]ll*I*IIYYXXXXXXXXXXXXXXXXYYYYYYYYYYYYEERY&FFF&&&&&&KKKKKKKKKKKKKKKKKKKKKKKKKKRRRRR#EE##RFKI,::::::::::,YEi:::`.,;,';;;;;'''~!!"!!!!""">>>>i+////////+i>+lK$&*&X//i+>iiiii>>>>"!~~~~~~~~~~~~~''''''''''''; , , , , ;;; ~> / }]F & / , ...........................................................................................
//..................................................................................................................:1$}.::`..YK# & "!~!~''~~~'~~'~~!;;+Wl`';;;;,,;;;,`::::::::::::::::::`,,;;;;;;;;;;:+#W>.:`,;;,,;,,,'" > "" > !~!}$F >> !!~'''''''~~!">++/1}}}]]ll***IYIIYYYYXXXXXXXXXXXXXXXYYYYYYYYYYYYE#&F&XFFF&&&&&KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKR##$RWI!R+`::::::::..'##'.:`:,;`;;;;;;''~~~!!!!!!""">>>>>iii+++ii>>i>"/&$K1>>i"iiii>>>""!!!!~~~~~~~~~~~~~~~~~~~~'''''';,,,,`,,,,!+}1FI;...........................................................................................
//


#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    //qputenv("QT_SCALE_FACTOR", "2");
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
